---
title: "Unified ad report in Google Sheets with OWOX Data Marts"
canonical: "https://www.owox.com/blog/articles/unified-ad-report-google-sheets"
updated: "2026-10-07"
---

# How to build a unified ad report in Google Sheets with OWOX Data Marts

A unified ad report is one table with one row per date, source and campaign. The route that holds up is each ad platform into a data warehouse, one data mart that unifies them with SQL, then Google Sheets as a destination – all in OWOX Data Marts.

[Data Integration](/blog/topics/data-integration) · Updated September 30, 2026 · [Ievgen Krasovytskyi](/team/ievgen-krasovytskyi) · 7 min read

![How to build a unified ad report in Google Sheets with OWOX Data Marts](https://cdn.owox.ai/www/webflow/6985f317192a8babcf262bf8_Unified-Ad-Report.png/public)

If you run ads on Facebook, Google, LinkedIn and TikTok, you know the question: **how much did each channel spend yesterday, and what did it bring?** The answer you want is one Google Sheet that updates every morning, with one row per channel per day.

A sheet can show that table, but it should not be where it is built. The route that holds up is each ad platform into a **data warehouse**, one **data mart** that unifies them with SQL, and Google Sheets as a **destination**. [OWOX Data Marts](https://www.owox.com/app-signup) runs the whole path, on OWOX Cloud or self-managed as free, [open-source](https://github.com/OWOX/owox-data-marts) software.

## What a unified ad report needs

*   **One grain.** One row per date, source, medium and campaign, so any two channels can be compared or summed.
*   **Shared naming.** The same source, medium and campaign spelling as your web analytics, so spend can be set against sessions and revenue.
*   **Each platform’s own numbers, labelled.** Spend, clicks, impressions and the conversions each platform _claims_, kept apart from what your store recorded.
*   **A refresh nobody has to remember.** New data loads on a schedule and the sheet follows.

## How the pieces fit

1.  **One connector data mart per ad platform** loads that platform’s raw data into your data warehouse.
2.  **One unifying data mart** reads those tables with SQL and outputs the shared grain.
3.  **Google Sheets is a destination.** The unifying data mart publishes a report there, or you pull it with the OWOX Data Marts extension.

OWOX Data Marts does not transform your data for you. The analyst writes the SQL; OWOX schedules, governs and publishes it.

## 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](/book-a-call)

We'll use your actual use case

## Step 1: Load each ad platform into the data warehouse

Every platform gets its own data mart of the **Connector** type (the connectors are [open source](https://github.com/OWOX/owox-data-marts)), so each can have its own credentials, fields and schedule. The step-by-step guides for each one are below; they all end with the data in your data warehouse, and you only need the platforms you actually run:

*   [Facebook Ads](/blog/articles/free-facebook-ads-connector-to-google-sheets)
*   [LinkedIn Ads](/blog/articles/free-linkedin-ads-to-google-sheets-connector)
*   [TikTok Ads](/blog/articles/free-tiktok-ads-to-google-sheets-connector)
*   [Microsoft Ads](/blog/articles/free-microsoft-ads-to-google-sheets-connector)
*   [Reddit Ads](/blog/articles/free-reddit-to-google-sheets-connector)
*   [X Ads](/blog/articles/free-x-ads-to-google-sheets-connector)
*   Google Ads: see the [Google Ads data source](/data-sources/google-ads)

Each guide ends with a Google Sheets report for that one platform. For a unified report you skip that part and go to step 2.

## Step 2: Unify the platforms in one data mart

OWOX’s demo e-commerce project does exactly this. Its **Unified Ad Spend** data mart describes itself as spend, clicks, impressions and each platform’s own conversion claim from every paid platform the business runs, brought together on one daily grain with a common source, medium and campaign naming.

![Overview of the Unified Ad Spend data mart in OWOX Data Marts, describing one daily grain with a common source, medium and campaign naming across seven paid platforms, and example questions it can answer](https://cdn.owox.ai/www/content-marketing-article/unified-ad-report-google-sheets/screens/2.png/public)

The mart is defined by SQL inside the data mart: one `SELECT` per platform over the table its connector wrote, all joined with `UNION ALL`. Every block is commented with the connector data mart it draws from and links straight to it.

![Data Setup of the Unified Ad Spend data mart in OWOX Data Marts, showing the SQL input source with the first block reading the Facebook Ads connector table and mapping spend, clicks and impressions to shared columns](https://cdn.owox.ai/www/content-marketing-article/unified-ad-report-google-sheets/screens/1.png/public)

Writing that SQL is where the platform differences get settled, once, in the open. A few from the demo project:

*   **Facebook** returns conversions as a JSON array of actions, so the SQL picks out the purchase entry.
*   **Reddit** reports spend in micros, so the block divides it, and it adds click-through and view-through purchases into one conversions column.
*   **X Ads** uses `url_clicks`, not `app_clicks`, because the store is a web store, and it exposes no conversion fields, so its conversions are `NULL` rather than a false zero.

Those choices live in one reviewed query instead of in cell formulas nobody can see. The per-platform guides in step 1 show each platform’s own block in detail.

## Step 3: Publish the unified data mart to Google Sheets

Open **Destinations** in the left menu, click **New Destination** and choose **Google Sheets** (more on the [Google Sheets destination](/data-destinations/google-sheets)). The same list holds [Looker Studio](/data-destinations/looker-studio), [Slack](/data-destinations/slack) and email, so the same data mart can feed all of them.

![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](https://cdn.owox.ai/www/content-marketing-article/unified-ad-report-google-sheets/screens/3.png/public)

Then bring the data into a sheet in one of two ways. Both are part of [spreadsheet reporting](/features/spreadsheet-reporting).

**Option A: a report on the data mart.**

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](https://cdn.owox.ai/www/content-marketing-article/unified-ad-report-google-sheets/screens/4.png/public)

Each report is listed on the Destinations tab with its last run and status.

![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](https://cdn.owox.ai/www/content-marketing-article/unified-ad-report-google-sheets/screens/5.png/public)

**Option B: the OWOX Data Marts extension.** Install [OWOX Data Marts from the Google Workspace Marketplace](https://workspace.google.com/marketplace/app/owox_data_marts/94902851409), open it inside Google Sheets and pull the data mart from there. If your team works in Excel, there is an [OWOX Excel add-in](https://marketplace.microsoft.com/en-us/product/WA200011946) too.

## Step 4: Schedule the refresh

Two schedules keep the report current, and both are triggers:

1.  On each platform’s data mart, add a **Connector Run** trigger so new data loads into the data warehouse daily, weekly, monthly or on an interval.
2.  On the unified data mart, add a **Report Run** trigger so the sheet refreshes after the data has landed.

Set the report trigger later than the connector triggers, so the sheet never reads half-loaded data.

## Why the sheet is not where the data lives

*   **The sheet has a ceiling.** A Google Sheets file holds at most 10 million cells. Ad data spends cells quickly: every day, source and campaign is a row, and every field is a column. The data warehouse has no such limit, and the sheet only needs the columns the report uses.
*   **History outlives the sheet.** Loaded data stays in the data warehouse, so a tab that is overwritten or an API that changes its schema does not take last year’s numbers with it.
*   **One number in every place.** The same data mart feeds the sheet, the dashboard and the Slack message, so they agree.
*   **Credentials stay out of the sheet.** Business users read the report without any data warehouse credentials.

## Ask the unified question in plain language

Once spend is one governed data mart, nobody has to write the join to ask about it. Connect Claude to OWOX Data Marts with the [OWOX Claude connector](https://claude.ai/directory/owox-data-marts) and a marketer can ask, for example:

> 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. Here is the answer it gave against OWOX’s demo e-commerce project: Reddit was the clear problem, with spend up 9% and conversions down 9%, and one TikTok campaign came second, while across all paid channels spend grew slower than conversions.

![Claude answering through OWOX MCP with a bar chart of year-to-date spend growth against conversion growth by channel and campaign, plus a written summary naming the two campaigns that scale spend without matching conversions](https://cdn.owox.ai/www/content-marketing-article/unified-ad-report-google-sheets/screens/6.png/public)

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](/blog/articles/governed-mcp-analytics). To blend the same spend with your CRM or web analytics, see [ad spend with CRM data](/blog/articles/unifying-ad-spend-crm-data-cac-report) and [GA4 conversions with ad spend](/blog/articles/blend-ga4-conversions-with-ad-spend).

## What it costs

OWOX Data Marts is free and open source when you run it yourself, connectors included, and the code is on [GitHub](https://github.com/OWOX/owox-data-marts). For OWOX Cloud, see the [pricing page](/pricing). Your data warehouse has its own costs, set by your provider.

## What’s next?

*   **Start with one platform.** Pick the guide from step 1 for the channel you spend the most on.
*   **Browse the connectors.** The [connectors page](/connectors) lists each source and the data warehouses it loads into.
*   **Read the code.** Check out our [GitHub repo](https://github.com/OWOX/owox-data-marts), leave us a ⭐ **star**, and help us build more connectors.

## 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](https://www.owox.com/app-signup)

## FAQ

## Frequently Asked Questions

Can I combine ad data from multiple platforms into one report?

Yes. Load each platform into your data warehouse with its own connector data mart, then write one data mart in SQL that reads those tables and outputs one row per date, source, medium and campaign. That unified data mart is what you publish to Google Sheets.

Is there a direct connector from each ad platform to Google Sheets?

No. The route is the ad platform, then a data warehouse, then Google Sheets. Google Sheets is a destination of the data mart, through a report or the OWOX Data Marts extension.

How do I get one row per channel per day in Google Sheets?

Build a unified data mart whose SQL selects from each platform’s table at the same grain: date, source, medium and campaign, with spend, clicks, impressions and conversions. Publish it to Google Sheets with a report, and add a Report Run trigger so the sheet refreshes every morning.

How often does the unified report refresh?

You set it with triggers. Connector Run triggers load each platform into the data warehouse on a schedule, and a Report Run trigger on the unified data mart then pushes the result to the sheet. Schedule the report after the connectors so it never reads half-loaded data.

Do I need to write SQL to unify ad platforms?

Someone has to write the unifying query once, usually an analyst. OWOX Data Marts does not transform data for you: it schedules, governs and publishes the SQL you write. Once it exists, marketers read the sheet or ask questions through OWOX MCP without writing any SQL.

## Who wrote this

![Ievgen Krasovytskyi](https://cdn.owox.ai/www/webflow/68404586b341508a789a4aa5_.png/public)

[Ievgen Krasovytskyi](/team/ievgen-krasovytskyi) · Head of Marketing

Ievgen Krasovytskyi is the Head of Marketing at OWOX, leading strategy across content, SEO, product marketing, and AI-powered automation. With deep expertise in analytics infrastructure, data warehouses, and marketing technology, he builds systems that connect marketing performance to business outcomes. Ievgen writes about SaaS growth, analytics workflows, and the future of AI in marketing operations.

[LinkedIn](https://www.linkedin.com/in/ievgen-krasovytskyi-a38a1253/) · [All articles](/team/ievgen-krasovytskyi)

[Data Integration](/blog/topics/data-integration)

## Related articles

[Data Integration · How to connect TikTok Ads to Google Sheets with OWOX Data Marts · September 30, 2026](/blog/articles/free-tiktok-ads-to-google-sheets-connector)

[Data Integration · How to connect X Ads (Twitter Ads) to Google Sheets with OWOX Data Marts · September 30, 2026](/blog/articles/free-x-ads-to-google-sheets-connector)

[Data Integration · CRM and digital marketing data integration: a practical guide · September 30, 2026](/blog/articles/crm-and-online-data-integration-guide)

[See all articles →](/blog/articles)

## Book a call

You are booked. The invitation is on its way to , with the calendar invite and the meeting link.

[Reschedule](#)

[Cancel](#)

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Data Integration](https://www.owox.com/blog/topics/data-integration) — /blog/topics/data-integration.md
- [Ievgen Krasovytskyi](https://www.owox.com/team/ievgen-krasovytskyi) — /team/ievgen-krasovytskyi.md
- [OWOX Data Marts](https://www.owox.com/app-signup)
- [Book a Demo](https://www.owox.com/book-a-call) — /book-a-call.md
- [Facebook Ads](https://www.owox.com/blog/articles/free-facebook-ads-connector-to-google-sheets) — /blog/articles/free-facebook-ads-connector-to-google-sheets.md
- [LinkedIn Ads](https://www.owox.com/blog/articles/free-linkedin-ads-to-google-sheets-connector) — /blog/articles/free-linkedin-ads-to-google-sheets-connector.md
- [TikTok Ads](https://www.owox.com/blog/articles/free-tiktok-ads-to-google-sheets-connector) — /blog/articles/free-tiktok-ads-to-google-sheets-connector.md
- [Microsoft Ads](https://www.owox.com/blog/articles/free-microsoft-ads-to-google-sheets-connector) — /blog/articles/free-microsoft-ads-to-google-sheets-connector.md
- [Reddit Ads](https://www.owox.com/blog/articles/free-reddit-to-google-sheets-connector) — /blog/articles/free-reddit-to-google-sheets-connector.md
- [X Ads](https://www.owox.com/blog/articles/free-x-ads-to-google-sheets-connector) — /blog/articles/free-x-ads-to-google-sheets-connector.md
- [Google Ads data source](https://www.owox.com/data-sources/google-ads) — /data-sources/google-ads.md
- [Google Sheets destination](https://www.owox.com/data-destinations/google-sheets) — /data-destinations/google-sheets.md
- [Looker Studio](https://www.owox.com/data-destinations/looker-studio) — /data-destinations/looker-studio.md
- [Slack](https://www.owox.com/data-destinations/slack) — /data-destinations/slack.md
- [spreadsheet reporting](https://www.owox.com/features/spreadsheet-reporting) — /features/spreadsheet-reporting.md
- [governed MCP analytics](https://www.owox.com/blog/articles/governed-mcp-analytics) — /blog/articles/governed-mcp-analytics.md
- [ad spend with CRM data](https://www.owox.com/blog/articles/unifying-ad-spend-crm-data-cac-report) — /blog/articles/unifying-ad-spend-crm-data-cac-report.md
- [GA4 conversions with ad spend](https://www.owox.com/blog/articles/blend-ga4-conversions-with-ad-spend) — /blog/articles/blend-ga4-conversions-with-ad-spend.md
- [pricing page](https://www.owox.com/pricing) — /pricing.md
- [connectors page](https://www.owox.com/connectors) — /connectors.md
- [Data Integration · CRM and digital marketing data integration: a practical guide · September 30,…](https://www.owox.com/blog/articles/crm-and-online-data-integration-guide) — /blog/articles/crm-and-online-data-integration-guide.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
