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

Running ads on Facebook is easy. Getting clear, usable reports from it? Not so much.
If you’ve ever tried to pull performance data into Google Sheets, you know the pain: manual CSV exports, expensive tools, and limited access to your own ad results.
The route that holds up is not a direct pipe from Facebook into a sheet. It is Facebook Ads, then a data warehouse, then Google Sheets. OWOX Data Marts runs that whole path: a Facebook 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’ve always believed that businesses shouldn’t have to rent their own data. So the Facebook Ads connector is free and open source: run OWOX Data Marts yourself and there is no paid tier and no hidden features.
It is for performance marketers, founders and analysts who want to see, and control, how Facebook Ads data reaches their reports. 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 Facebook Ads data into Google Sheets?
Why bring Facebook Ads data into Google Sheets?
If you’ve ever tried analyzing Facebook Ads performance beyond what Ads Manager offers, you already know the headaches:
❌ Rigid reports with limited customization
❌ No easy way to blend Facebook data with other sources
❌ Connectors that charge you more as your data grows
That’s where Google Sheets comes in – and why this connector changes the game.
✅ With Google Sheets, you can structure your ad data however you need.
✅ You can combine it with data from Google Analytics, CRM tools, and other platforms.
✅ You can build automated reports, dashboards, and share insights across your team – no waiting, no copy-pasting.
Sheets is where marketers want to work, and that part is right. The open question is where the data should live while they do.
OWOX Data Marts
See your first report built in real time. 15 minutes.
- Connect your data warehouse
- Pick your metrics
- Get a live Google Sheets report
In the time it takes to write a ticket. Then imagine never writing that ticket again.
Book a DemoWe'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 Facebook-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 ad, 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.
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. That continuity is what year-on-year and campaign-history questions depend on.
Facebook is rarely the only channel
The moment the question is “which platform is actually paying back?”, Facebook 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 Facebook Ads is one of them – the same connector can land in BigQuery, Snowflake, Athena or Redshift:

A separate data mart, Unified Ad Spend, then brings the platforms together. The analyst who owns it wrote the SQL: one SELECT per platform, each commented with the connector data mart it reads, all UNION ALLed to one daily grain with a shared source, medium and campaign naming.

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. And because the naming matches the store’s traffic sources, spend can be set against the sessions and revenue it produced instead of being read on its own:

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.

How it works
- A Facebook 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.
- Google Sheets is connected as a destination. The data mart publishes its data there.
- 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.
- Or you just ask. Through OWOX MCP you can blend the same data with other Facebook 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
- A data warehouse. OWOX Data Marts supports BigQuery, Snowflake, Databricks, AWS Athena and AWS Redshift. The examples here use BigQuery.
- A Facebook Ads account you can read insights from.
- 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 Facebook Ads data to Google Sheets
Step-by-step: send Facebook Ads data to Google Sheets
Seven steps. The first five load your Facebook 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 serveOpen
http://localhost:3000and 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 Facebook Ads tables will be created. The BigQuery walkthrough, including the service account, is in the BigQuery guide.
Step 3: Create the Facebook Ads data mart ( ~2 min)
- Click New Data Mart, give it a title and select the data warehouse from step 2.
- Set the type to Connector and choose Facebook Ads (the Facebook Ads data source).
- Authorize the connection:
- OWOX Cloud: authorize Facebook Ads with your login through OAuth. There is no token to copy.
- Open-source version: it has no OAuth, so you connect with an access token from Meta. Get one below, then paste it into the connector.
- Add the Account ID. It is in your Meta Ads account overview and in the Ads Manager URL.
Open-source version: get an access token
You’ll need an access token to authorize the connector and pull data from Facebook Ads.
- Log In to Meta for Developers
- Visit the Meta for Developers site

- Sign in using your Facebook account.
(Use the account that has access to your Meta Ads Business Manager.)

- Create a New App
- Click My Apps in the top-right menu, then Create App


- In the App Name field, enter a name of your choice.

- For the use case, select Other

- Choose Business as the app type → click Next

- Connect to a Business Portfolio
- Select the appropriate Business Portfolio
- Click Create App

- Start Business Verification
- Go to App Settings → Basic

- If prompted, connect your app to your business portfolio.

- Click Start Business Verification

- Submit Verification Info
- Fill in the required fields with accurate contact and organizational information.
- Ensure your submission meets Meta’s requirements.

- Meta will review your submission within 2 business days.

- Set Up Marketing API
- After successful verification, return to your app dashboard.
- Locate the Marketing API card and click Set Up

- Grant Required Permissions
- In the Tools section, enable the following scopes:
- ads_read
- Read_insights
- In the Tools section, enable the following scopes:

- Generate and Save Token
- Click Get Token

- Copy the generated access token and store it securely.
To regenerate, go to Marketing API → Tools → User Token section.

Step 4: Choose what to load and backfill your history ( ~2 min)
- Select the endpoint. If you are starting out, begin with ad-account/ads: it carries each ad’s details, which most teams use for their first reports.
- Select the fields you need, such as clicks, spend and impressions, and set the start date.
- Click Publish Data Mart.
- Click Manual Run and choose Backfill for the first run. Add the start and end dates and click Run. This puts your historical Facebook Ads data into the data warehouse.
- Open Run History and check for Success.
Step 5: Schedule the refresh ( ~1 min)
- Open the Triggers tab of the data mart and click Add Trigger.
- Choose Connector Run as the trigger type, then set daily, weekly, monthly or interval, plus the time, days and time zone.
- Click Create Trigger. Facebook 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.
- Open the data mart, go to the Destinations tab and click New Report under your Google Sheets destination.
- Give the report a title and share the Google document with the address the form shows.
- Paste the URL of your Google Sheet, or click New Sheet to create one.
- Choose the report columns you want in the sheet.
- Click Create & Run report.

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.

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
Facebook Ads data rarely answers a question on its own. With OWOX MCP you can blend it with other Facebook 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 the mart’s own example question:
Which campaigns are scaling spend without a matching lift in orders?
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:

| 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?
This connector is part of our effort to make data ownership simple, transparent and accessible for everyone.
Here are more resources to explore:
- More free connectors on the connectors page, including Google Ads, TikTok Ads, LinkedIn Ads and Microsoft Ads.
- The full data warehouse setup in the Facebook Ads → BigQuery guide.
Check out our GitHub repo, leave us a ⭐ star, and let’s build better tools together.
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
Frequently Asked Questions
Can I export Facebook Ads data to Excel instead of Google Sheets?
Yes. OWOX has an Excel add-in, so you can work with your Facebook Ads data in Excel as well as in Google Sheets. Because the data lives in your data warehouse, you can also query it from any tool that connects to it, such as Looker Studio, Power BI or Tableau. You can also download any Google Sheets report as an .xlsx file.
What data warehouse do I need to connect Facebook Ads to Google Sheets?
OWOX Data Marts supports BigQuery, Snowflake, Databricks, AWS Athena and AWS Redshift. Facebook Ads data is loaded into your data warehouse first, and Google Sheets reads it from there. If you do not have a data warehouse yet, a Google BigQuery project on its free tier is an easy way to start: Google includes 10 GB of storage and 1 TB of queries per month at no charge.
Will my formulas and charts break when the data refreshes?
No. Refreshing an OWOX Google Sheets report only touches the cells the report owns, so extra columns, formulas, pivot tables, charts and named ranges in the same sheet stay intact. Your column order is kept too.
Is there a direct Facebook Ads to Google Sheets connector?
No. The route is Facebook Ads, then a data warehouse, then Google Sheets: a Facebook Ads data mart loads your data into the data warehouse, and Google Sheets reads it through a report or the OWOX Data Marts extension. Setup is point-and-click and needs no SQL, and the self-managed install is two terminal commands.
Can I combine Facebook Ads data with Google Ads or other platforms in one spreadsheet?
Yes. Each ad platform is loaded into its own connector data mart. An analyst then blends them in your data warehouse, either with SQL that unions the platforms or with joinable data marts, and delivers the result to one Google Sheets report. OWOX's demo e-commerce project does this in its Unified Ad Spend data mart for Google, Facebook, TikTok, LinkedIn, Microsoft, Reddit and X. No CSV stitching or VLOOKUP chains are needed.
How often can I refresh Facebook Ads data in Google Sheets?
You set the schedule with triggers. A Connector Run trigger loads new Facebook Ads data into your data warehouse daily, weekly, monthly or on an interval, at the time and time zone you choose. 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.
Is it free to send Facebook Ads data to Google Sheets with OWOX Data Marts?
Yes. OWOX Data Marts is open source, and the Facebook 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.



