Data Integration

How to connect LinkedIn Ads to Google Sheets with OWOX Data Marts

There is no direct LinkedIn Ads to Google Sheets connector any more. The route that holds up is LinkedIn Ads, then a data warehouse, then Sheets – and OWOX Data Marts runs all of it, open source or on OWOX Cloud.

Data IntegrationVadym Kramarenko13 min read

How to connect LinkedIn Ads to Google Sheets with OWOX Data Marts

Running campaigns on LinkedIn Ads is straightforward. But pulling that data into Google Sheets for reporting? That’s where things get frustrating: manual exports from Campaign Manager, API limits, and no simple way to set spend next to your pipeline.

The route that holds up is not a direct pipe from LinkedIn into a sheet. It is LinkedIn Ads, then a data warehouse, then Google Sheets. OWOX Data Marts runs that whole path: a LinkedIn Ads data mart loads your ad data into your data warehouse, and Google Sheets reads it from there – through a report, or through the OWOX Data Marts extension. You can run OWOX Data Marts yourself as free open source, or on OWOX Cloud.

Why we made this free connector

Why we made this free connector

At OWOX, we believe marketing teams shouldn’t have to rent access to their own LinkedIn Ads data. So the LinkedIn Ads connector is free and open source: run OWOX Data Marts yourself and there is no paid tier and no hidden features. The longer story is in why we built free data connectors for analysts.

Join the open-source movement

We’re not just releasing a free connector, we’re inviting you to help shape the future of open marketing analytics tools.

At OWOX, we believe that data access and transparency should be a right, not a luxury. That’s why this connector is 100% open-source – giving you full control over how it works, what it does, and how far it can go.

If you like what we do, please ⭐ star our GitHub repo to show your support – it helps us reach more analysts and grow the number of available connectors.

Also, feel free to:

  •  Explore the code and customize it to fit your needs.
  • Contribute to this data connectivity ecosystem: suggest new connectors, pull new connectors, and / or documentation to support the wider community.
  • Join our community & share your feedback.

We’ve built the core, the foundation; now it’s your turn to take it further.

Why bring LinkedIn Ads data into Google Sheets?

Why bring LinkedIn Ads data into Google Sheets?

If you’ve used LinkedIn Ads Manager, you know the pain:
❌ Reports are rigid, hard to customize, and don’t scale
❌ Manual exports get stale quickly and limit your analysis
❌ No simple way to connect ad data with GA4, HubSpot, or your CRM

This free LinkedIn Ads → Google Sheets connector changes that:
✅ Pull raw campaign, account, and organization-level data directly into Sheets
✅ Merge LinkedIn Ads data with your pipeline for unified reporting
✅ Define exactly which fields, metrics, and URNs you want,  no guesswork
✅ Automate refreshes and build shareable dashboards your team uses

If you’re building ROAS models, evaluating B2B performance, or mapping multi-touch attribution, this connector gives you the flexibility and structure LinkedIn Ads Manager never could.

Sheets is where marketers want to work, and that part is right. The open question is where the data should live while they do.

The Turning Point

OWOX Data Marts

See your first report built in real time. 15 minutes.

  1. Connect your data warehouse
  2. Pick your metrics
  3. Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

Book a Demo

We'll use your actual use case

Why the data goes through a data warehouse

Why the data goes through a data warehouse

A sheet is where people read data, not where it should live. That is why OWOX Data Marts puts a data warehouse in the middle, and why there is no direct LinkedIn-to-sheet connector. Four things follow.

The sheet has a ceiling

A Google Sheets file holds at most 10 million cells. Ad data eats cells quietly: every campaign, every day and every breakdown is a row, and every field you pull is a column, so a wide import burns through the limit faster than the row count suggests.

LinkedIn’s analytics endpoint also caps a single response at 15,000 rows, so long histories are loaded in date ranges. The data warehouse holds the full history. The sheet report holds only the columns you choose.

History outlives the sheet

Data loaded into a data warehouse stays there. A tab that gets overwritten, a sheet someone re-copies or an upstream API that changes its schema does not take last year’s numbers with it. B2B sales cycles are long, so the question is often how spend from two quarters ago relates to pipeline today, and that needs the history to still be there.

LinkedIn is rarely the only channel

The moment the question is “which platform is actually paying back?”, LinkedIn data alone is not enough, and blending tabs in a sheet means lookup formulas that break when a campaign is renamed.

OWOX’s demo e-commerce project shows the alternative. Each ad platform is collected by its own connector data mart, and LinkedIn Ads is one of them – the same connector can land in BigQuery, Snowflake, Databricks or Redshift:

OWOX Data Marts list filtered to LinkedIn Ads, showing connector data marts for the same source on AWS Redshift, Databricks, BigQuery and Snowflake – the ad data lives in the data warehouse you choose, not in one sheet

A separate data mart, Unified Ad Spend, then brings the platforms together. The analyst who owns it wrote the SQL: one SELECT per platform, all UNION ALLed to one daily grain with a shared source, medium and campaign naming. Here is its LinkedIn block, which maps LinkedIn’s own cost, click and conversion columns onto the shared ones:

Data Setup of the Unified Ad Spend data mart in OWOX Data Marts, scrolled to the analyst-written SQL block for LinkedIn Ads that maps LinkedIn cost, clicks, impressions and conversions to shared columns – LinkedIn is one input among the platforms unified in SQL

OWOX Data Marts does not model the data for you. It publishes and governs the query the analyst wrote, so everyone reads the same definition.

One number, every place you read it

The same data mart can feed a Google Sheets report, a Looker Studio dashboard, a Slack channel or an email, so the number in the sheet is the number in the dashboard. Business users read it without needing data warehouse credentials.

Destinations in OWOX Data Marts listing Google Sheets, Slack, Email and Looker Studio – one governed data mart delivered to every place the team already reads

How it works

How it works

  1. A LinkedIn Ads data mart of the Connector type loads your ad data into tables in your data warehouse. A manual run backfills history, and a trigger keeps it fresh.
  2. Google Sheets is connected as a destination. The data mart publishes its data there.
  3. You read it in Sheets with a report created on the data mart, or by pulling it with the OWOX Data Marts extension inside Google Sheets.
  4. Or you just ask. Through OWOX MCP you can blend the same data with other LinkedIn Ads endpoints, other ad platforms, or your CRM and GA4 data, using the data model.

OWOX Data Marts does not transform your data. It loads, publishes and governs it, and any SQL on top is written by an analyst.

What you need

What you need

  • A data warehouse. OWOX Data Marts supports BigQuery, Snowflake, Databricks, AWS Athena and AWS Redshift. The examples here use BigQuery.
  • A LinkedIn Ads account you can read campaign data from, and its Account URNs.
  • OWOX Data Marts, either self-managed with Node.js and the OWOX CLI (free and open source) or OWOX Cloud.
  • A Google account for the Google Sheets report.

Step-by-step: send LinkedIn Ads data to Google Sheets

Step-by-step: send LinkedIn Ads data to Google Sheets

Seven steps. The first five load your LinkedIn Ads data into your data warehouse. The last two bring it into Google Sheets.

Step 1: Start OWOX Data Marts ( ~2 min)

Choose how to run it:

  • OWOX Cloud: sign in or sign up and you are ready for step 2.

  • Self-managed (open source): install Node.js 22.22.0 or later, then run:

    npm install -g owox
    owox serve

    Open http://localhost:3000 and you are in. The OWOX docs cover deployment options beyond a local machine.

Step 2: Connect your data warehouse ( ~3 min)

Open Storages in the left menu and add your data warehouse, for example BigQuery. This is where the LinkedIn Ads tables will be created. The BigQuery walkthrough, including the service account, is in the LinkedIn Ads → BigQuery guide.

Step 3: Create the LinkedIn Ads Data Mart ( ~2 min)

  1. Click New Data Mart, give it a title and select the data warehouse from step 2.
  2. Set the type to Connector and choose LinkedIn Ads (the LinkedIn Ads data source).
  3. Authorize the connection:
    • OWOX Cloud: authorize LinkedIn Ads with your login through OAuth. There are no credentials to copy.
    • Open-source version: it has no OAuth, so you connect with a Client ID, a Primary Client Secret and a Refresh Token from a LinkedIn developer app. Get them below, then paste them into the connector.
  4. Add your Account URNs. To find one, open LinkedIn Ads in Campaign Manager and look for the account URN:

LinkedIn Ads dashboard showing where to find the Account URN for data import.

Open-source version: get your LinkedIn credentials

The open-source version needs three things from a LinkedIn developer app: a Client ID, a Primary Client Secret and a Refresh Token. Follow these steps to get them.

LinkedIn Developer portal showing the “Create app” button on the welcome screen.

  • Enter your App Name.
  • Paste the link to your company’s LinkedIn page in the LinkedIn Page field.

Form fields in the LinkedIn Developer portal to input App name and LinkedIn Company Page URL.

  • Upload your company logo.
  • Accept the legal agreement and click Create App.

App creation screen in LinkedIn Developer portal with logo upload, legal agreement checkbox, and “Create app” button highlighted.

  • Verify your app:
    • Go to the Settings tab.
    • Click the Verify button.

The admin of your LinkedIn company page will receive a request to approve the app.

  • Request access to the LinkedIn Advertising API:
    • Go to the Products tab of your app.
    • Request access to the Advertising API.

LinkedIn Developer portal Products tab showing “Advertising API” option with “Request access” button.

Note: Approval may take up to 24 hours. You’ll receive an email once approved.

Email inbox displaying LinkedIn Developer approval email confirming access to the Advertising API.

  • Once approved, the Advertising API will appear under the Added Products section.

LinkedIn Developer Products tab showing “Advertising API” listed under Added Products.

  • Copy your Client ID and Primary Client Secret:
    • On the Auth tab, copy the Client ID and the Primary Client Secret.
  • Generate the token:
    • On the same Auth tab, click OAuth 2.0 Tools in the right-hand panel.

LinkedIn Developer Auth tab with “OAuth 2.0 tools” link and “Generate a new Client Secret” option.

  • Click the Create Token button.

OAuth 2.0 tools screen in LinkedIn Developer portal with “Create token” button highlighted.

  • Configure scopes:
    • If you see the error: “There aren’t any scopes available for this app…”, it means the Advertising API access has not been granted yet.

LinkedIn OAuth screen showing error message for missing scopes and instructions to request Advertising API access.

  • Ensure these two scopes are selected:

r_ads
r_ads_reporting

OAuth token creation screen with r_ads and r_ads_reporting scopes selected for LinkedIn Ads access.

  • Then click **Request access token.

    **

OAuth interface showing the “Request access token” button to finalize LinkedIn Ads API authorization.

  • Authorize and copy the Refresh Token:

    • On the next screen, click Allow to approve access.
    • Copy the Refresh Token, not the Access Token. The Refresh Token is at the bottom of the page. Store it securely.

LinkedIn consent screen asking for permission to access and report on advertising accounts with the “Allow” button highlighted.

Step 4: Choose what to load and backfill your history ( ~2 min)

  1. Select the endpoint: Ad Accounts, Campaign Groups, Campaigns, Creatives or the LinkedIn Ads Analytics Report. Ad Accounts is the simplest first run, and the LinkedIn Ads Analytics Report carries the impressions, clicks, spend and conversions that most reports need.
  2. Select the fields you need and set the dataset name, or keep the default.
  3. Click Publish Data Mart.
  4. Click Manual Run and choose Backfill for the first run. Add the start and end dates and click Run. This puts your historical LinkedIn Ads data into the data warehouse. For a long history, run it in date ranges.
  5. Open Run History and check for Success.

An incremental load, which imports the current day plus a lookback window, takes over once you schedule it in the next step.

Step 5: Schedule the refresh ( ~1 min)

  1. Open the Triggers tab of the data mart and click Add Trigger.
  2. Choose Connector Run as the trigger type, then set daily, weekly, monthly or interval, plus the time, days and time zone.
  3. Click Create Trigger. LinkedIn Ads data now refreshes on its own.

Step 6: Connect Google Sheets as a destination ( ~2 min)

Open Destinations in the left menu, click New Destination and choose Google Sheets (more on the Google Sheets destination). A destination is where a data mart can deliver its data; the same list also holds Looker Studio, Slack and email.

Step 7: Bring the data into Google Sheets ( ~2 min)

You have two ways to read the data mart in Sheets. Both are part of spreadsheet reporting in OWOX Data Marts.

Option A: a report on the data mart. Reports live on the Destinations tab.

  1. Open the data mart, go to the Destinations tab and click New Report under your Google Sheets destination.
  2. Give the report a title and share the Google document with the address the form shows.
  3. Paste the URL of your Google Sheet, or click New Sheet to create one.
  4. Choose the report columns you want in the sheet.
  5. Click Create & Run report.

The Create new report form in OWOX Data Marts for a Google Sheets destination, with a document link or New Sheet, selectable report columns and the Create & Run report button – how a data mart becomes a sheet

Each report is listed on the Destinations tab with its last run and status. Run it again whenever you need fresh data, or put it on a schedule with a report trigger.

Google Sheets reports listed on the Destinations tab of a data mart in OWOX Data Marts with last run date and a success status – every sheet is a governed report on one data mart

Option B: the OWOX Data Marts extension. Install OWOX Data Marts from the Google Workspace Marketplace, open it inside Google Sheets and pull the data mart from there, without leaving the sheet. If your team works in Excel, there is an OWOX Excel add-in too.

Ask the blended question in plain language

Ask the blended question in plain language

LinkedIn Ads data rarely answers a question on its own. With OWOX MCP you can blend it with other LinkedIn Ads endpoints, with other ad platforms, or with your CRM data and GA4 data (GA4 through its native BigQuery export), using the data model, and ask for all of it in plain language.

Once ad spend is a governed data mart, nobody has to write the join to ask about it. Connect Claude to OWOX Data Marts with the OWOX Claude connector and a marketer can ask:

How does LinkedIn compare with our other paid channels on cost per conversion?

Claude asks OWOX which data marts are relevant, reads their fields and the joins the analyst defined, and queries the one it picks. Ask it against raw data warehouse tables instead and it has to guess the join.

Here is the answer Claude gave against OWOX’s demo e-commerce project:

Claude answering the prompt through OWOX MCP with a comparison of LinkedIn cost per conversion against the other paid channels – an answer read from governed data marts, not guessed from raw tables

Ungoverned Against the data model
What the model sees Raw data warehouse tables The published data marts
What it does Invents the join Reads the analyst’s join
What you get A plausible number, confidently wrong The number, and the query behind it

MCP is the interface here, not the guarantee. The guarantee is the governed data mart behind it, and every question is logged in Run History. For how that works end to end, read governed MCP analytics.

What’s next?

What’s next?

This connector is part of our effort to make data ownership simple, transparent and accessible for everyone.

Here are more resources to explore:

Check out our GitHub repo, leave us a ⭐ star, and let’s build better tools together.

Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

  • No AI hallucinations
  • Analyst-governed definitions
  • Every number traces to SQL
Get started free

FAQ

Frequently Asked Questions

Is there a direct LinkedIn Ads to Google Sheets connector?

No. The route is LinkedIn Ads, then a data warehouse, then Google Sheets: a LinkedIn Ads data mart loads your data into the data warehouse, and Google Sheets reads it through a report or the OWOX Data Marts extension.

How often does LinkedIn Ads data refresh in Google Sheets?

You set the schedule with triggers. A Connector Run trigger loads LinkedIn Ads data into your data warehouse daily, weekly, monthly or on an interval, at the time and time zone you choose; an incremental load imports the current day plus a lookback window. A Report Run trigger then pushes the data mart to your Google Sheets report on its own schedule, so nobody has to re-run anything by hand.

Can I load data from several LinkedIn Ads accounts?

Yes. The LinkedIn Ads connector takes Account URNs, so you can add more than one ad account and load them into the same data mart. Find each account’s URN in LinkedIn Campaign Manager.

How do I authenticate with LinkedIn Ads?

On OWOX Cloud you authorize LinkedIn Ads with OAuth, so there are no credentials to copy. The open-source version has no OAuth: you create a LinkedIn developer app, request access to the Advertising API (approval can take up to 24 hours), copy the app’s Client ID and Primary Client Secret, and generate a Refresh Token with the r_ads and r_ads_reporting scopes. Copy the Refresh Token, not the Access Token.

Which LinkedIn Ads data can I load into my data warehouse?

You choose an endpoint in the data mart: Ad Accounts, Campaign Groups, Campaigns, Creatives or the LinkedIn Ads Analytics Report, which carries impressions, clicks, spend and conversions. You then select the fields you need from that endpoint.

Is it free to send LinkedIn Ads data to Google Sheets with OWOX Data Marts?

Yes. OWOX Data Marts is open source, and the LinkedIn Ads connector is included at no extra cost when you run it yourself: no per-connector fees and no trial that expires. You pay only for your own data warehouse compute and storage. OWOX Cloud is the hosted option; see the pricing page for its plans.

Who wrote this

Vadym Kramarenko

Vadym Kramarenko Growth Marketing Manager

Vadym Kramarenko is a Growth Marketing Manager at OWOX, where he drives user acquisition and product-led growth strategies. He hosts the OWOX podcast, interviewing analytics professionals about data-driven marketing, attribution, and reporting best practices. Vadym specializes in turning complex analytics concepts into practical, actionable marketing frameworks.