---
title: "X Ads (Twitter Ads) to Google Sheets with OWOX Data Marts"
canonical: "https://www.owox.com/blog/articles/free-x-ads-to-google-sheets-connector"
updated: "2026-11-13"
---

# How to connect X Ads (Twitter Ads) to Google Sheets with OWOX Data Marts

There is no direct X Ads (Twitter Ads) to Google Sheets connector any more. The route that holds up is X Ads, then a data warehouse, then Sheets – and OWOX Data Marts runs all of it.

[Data Integration](/blog/topics/data-integration) · Updated September 30, 2026 · [Vadym Kramarenko](/team/vadym-kramarenko) · 11 min read

![How to connect X Ads (Twitter Ads) to Google Sheets with OWOX Data Marts](https://cdn.owox.com/www/content-marketing-article/free-x-ads-to-google-sheets-connector/thumbnail/2-ys4p73.png/public)

If you’ve tried to export X Ads (formerly Twitter Ads) data to Google Sheets by hand, you know the pain: **CSV downloads, a reporting view you can’t reshape and no history you control**.

The route that holds up is not a direct pipe from X Ads into a sheet. It is X Ads, then a **data warehouse**, then Google Sheets. [OWOX Data Marts](https://www.owox.com/app-signup) runs that whole path: a X 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. The quickest start is OWOX Cloud, but you can also run OWOX Data Marts yourself as free open source.

## Why we made this free connector

At OWOX, we’ve always believed that businesses shouldn’t have to rent their own data. So the X 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](/blog/articles/free-open-source-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](/blog/articles/marketing-analytics-helps-businesses-make-data-driven-decisions) 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**](https://github.com/OWOX/owox-data-marts) **to show your support – it helps us reach more analysts and grow the number of available connectors.**

Also, feel free to:

*   **[Explore the code](https://github.com/OWOX/owox-data-marts)** and customize it to fit your needs.
*   **Contribute to this data connectivity ecosystem**: suggest new connectors, pull new connectors, and/or provide documentation to support the wider community.
*   **Join our community** and share your feedback.

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

## Why bring X Ads data into Google Sheets?

X Ads Manager reports are fine for a quick look, and hard to bend once you need them next to other channels:

*   **Custom reports your way:** reshape X Ads data to fit your reporting, not the platform’s.
*   **Side by side with other paid channels:** blend X performance with [CRM](/blog/articles/crm-and-online-data-integration-guide), [GA4](/blog/articles/an-in-depth-look-at-google-analytics-4) or offline conversions.
*   **Automated [dashboards](/product/dashboards)** and live insights your team can share, instead of manual exports.

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

## 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 X Ads-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, while the sheet report holds only the columns you choose. A backfill loads a custom date range once, and a trigger keeps the data fresh afterwards.

### 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 campaign-over-campaign and year-on-year questions depend on.

### X is rarely the only paid channel

The moment the question is “is X worth it next to the other channels?”, X 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 X Ads is one of them.

A separate data mart, **Unified Ad Spend**, brings the platforms together. The analyst who owns it wrote the SQL: one `SELECT` per platform, all `UNION ALL`ed to one daily grain with a shared source, medium and campaign naming. Here is its X Ads block. It converts the billed charge from micros, labels the source `twitter`, uses `url_clicks` rather than `app_clicks` because this is a web store, and leaves conversions as `NULL` because the X Ads connector exposes no conversion fields – a comment in the SQL says so:

![Data Setup of the Unified Ad Spend data mart in OWOX Data Marts, scrolled to the analyst-written SQL block for X Ads that converts billed charge from micros, uses url\_clicks instead of app\_clicks and leaves conversions NULL – X Ads is one input among the platforms unified in SQL](https://cdn.owox.com/www/content-marketing-article/free-x-ads-to-google-sheets-connector/screens/1.png/public)

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](https://cdn.owox.com/www/content-marketing-article/free-x-ads-to-google-sheets-connector/screens/2.png/public)

## How it works

1.  **A X Ads [data mart](/features/data-mart-management)** 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 X 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

*   **An X Ads account** and its **Account ID** (in the address bar of ads.x.com).
*   **An X developer app with Ads API access:** its Consumer Key and Consumer Secret, plus an Access Token and Access Token Secret. X has to approve the app for the Ads API first, which the X documentation says can take up to three business days.
*   **A data warehouse.** OWOX Data Marts supports BigQuery, Snowflake, Databricks, AWS Athena and AWS Redshift. The examples here use BigQuery.
*   **OWOX Data Marts:** OWOX Cloud for the quickest start, or self-managed with Node.js and the OWOX CLI (free and open source).
*   **A Google account** for the Google Sheets report.

## Step-by-step: send X Ads data to Google Sheets

Seven steps. The first five load your X 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](https://www.owox.com/app-signup) 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](https://docs.owox.com) 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](/data-storages/google-bigquery). This is where the X Ads tables will be created. The BigQuery walkthrough, including the service account, is in the [X Ads → BigQuery guide](/blog/articles/free-x-ads-to-bigquery-connector).

### Step 3: Create the X Ads Data Mart ( ~5 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 **X Ads** (the [X Ads data source](/data-sources/x-ads)).
3.  Add your **Account ID**: sign in to ads.x.com and copy the ID from the address bar.
4.  Add the four app credentials: **Consumer Key**, **Consumer Secret**, **Access Token** and **Access Token Secret**. The X Ads connector signs its requests with OAuth 1.0a, so there is no sign-in button: the next section shows where each credential comes from.

#### Get your X Ads credentials

**1\. Get Ads API access for an X developer app**

*   In the X Developer Portal, open your app. The **App ID** on the app details page is the ID you submit when you ask X for Ads API access.

![X Developer Portal displaying the app details section for an app named “OWOX App,” with the App ID highlighted.](https://cdn.owox.com/www/webflow/68596c0d8a86635c3fcfffcd_AD_4nXfdFvj9E91J2qK41gHBKlb4QQb0IFPpKWeCZpmcv0wTr2HroypnHb_k0lJH2tQunoJvd2YLzNXN_HwA15hamigvAG8FTJTmjHuw0N3GygeQEZvxdC3Pb0p3WCW6R7as5qsIwDEb.png/public)

*   Submit the X Ads API access request with that App ID and choose **Standard** access (analytics, campaign management, creatives and custom audiences). X emails you when the app is approved.

**2\. Set the app permissions**

*   Under **User authentication settings**, set the app permissions to **Read and write** and turn on OAuth 1.0a.

![User authentication settings in the X Developer Portal showing the selected “Read and write” app permission.](https://cdn.owox.com/www/webflow/68596c0d8a86635c3fcfffca_AD_4nXc_V8VOGsswDtYEjlsFrBSoGrlU5E0MWxmaK1OSHrtY3AIVqL11P8ktSDk9gIypIuG2E6NydqEGsnALjAcZC-8Xu1hRwRwjAs-7htMgfK0HVDy_Fz6oZ2SXkL-q-BstRhd52eItaw.png/public)

*   Fill in the **App info**: a callback URL (for example a localhost address) and your website URL, then save.

![App info configuration in the X Developer Portal with the Callback URI for OAuth setup.](https://cdn.owox.com/www/webflow/68596c0d8a86635c3fcfffb0_AD_4nXenweSEqb9lJg2CAjm1P9zYor6mvLqAX4CvFPkeK3_KsSQm6ogCBOfAvoAFCnHmP7Vx9boNxGwcm_Mb2R-Bh7elhTGoZ-vTbyoAdtdkP5YS7qq9RFDGrVtistbDMy9o1mn03mkLPQ.png/public)

**3\. Copy the keys and generate the tokens**

*   Open the **Keys and tokens** tab. Copy the **API Key and Secret**, which are the Consumer Key and Consumer Secret, and generate the **Access Token and Secret**.

![Keys and tokens screen in the X Developer Portal showing options to regenerate API Key and generate Access Token.](https://cdn.owox.com/www/webflow/68596c0d8a86635c3fcfffc4_AD_4nXdRgoWxAxZ6Y3GTeDOoWw_cPXrZY4Hut-X9TM7ZZ0E1yXLEW15iNE5onh14_QA8UPFH0T3ws3VT9Bzk0tVdJiEA2M_XL0rwZj_mxYkO6mE-OtUZRt0bY_IvJ5dkHJ2dQquPauPdHA.png/public)

*   Generate the tokens while signed in as the user that has access to the ad account. On the authorization screen, click **Authorize app**.

![Authorization prompt screen asking the user to authorize the OWOX App to access and manage their X account data and campaigns.](https://cdn.owox.com/www/webflow/68596c0d8a86635c3fcfffc7_AD_4nXfAMfUy_5tfeoPeNiO9dlyo8UOkVUXaHGYylx5FUeA_lwrJgNWMtHjjNyk7gVnXFRKtyhDm-5R5GjuJhtHiIr7sZYBYCdfMN88lE-Bz5rIQDfxmYHjuPaNUFBIjuXT71yz4eNGTrQ.png/public)

Keep all four values private: anyone who has them can read your X Ads data.

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

1.  Select the **Ad Performance** endpoint, which loads into the `x_ads_stats` table, and the **fields** you need.
2.  Set the dataset, 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**. Without dates, the first run imports from the first day of the previous month.
5.  Open **Run History** and check for **Success**.

### 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**. X 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](/data-destinations/google-sheets)). A destination is where a data mart can deliver its data; the same list also holds [Looker Studio](/data-destinations/looker-studio), [Slack](/data-destinations/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](/features/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](https://cdn.owox.com/www/content-marketing-article/free-x-ads-to-google-sheets-connector/screens/3.png/public)

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](https://cdn.owox.com/www/content-marketing-article/free-x-ads-to-google-sheets-connector/screens/4.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, without leaving the sheet. If your team works in Excel, there is an [OWOX Excel add-in](https://marketplace.microsoft.com/en-us/product/WA200011946) too.

## Ask the blended question in plain language

X Ads data rarely answers a question on its own. With [OWOX MCP](/features/mcp) you can blend it with other X Ads endpoints, with other ad platforms, or with your [CRM data](/blog/articles/unifying-ad-spend-crm-data-cac-report) and [GA4 data](/blog/articles/blend-ga4-conversions-with-ad-spend) (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](https://claude.ai/directory/owox-data-marts) and a marketer can ask:

> Compare our X Ads spend with our other paid channels.

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.

|  | 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](/blog/articles/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:

*   **The X Ads connector for each data warehouse:** [BigQuery](/connectors/free-x-ads-connector-to-google-bigquery), [Snowflake](/connectors/free-x-ads-connector-to-snowflake), [Databricks](/connectors/free-x-ads-connector-to-databricks), [AWS Athena](/connectors/free-x-ads-connector-to-aws-athena) and [AWS Redshift](/connectors/free-x-ads-connector-to-aws-redshift).
*   **The full data warehouse setup** in the [X Ads → BigQuery guide](/blog/articles/free-x-ads-to-bigquery-connector).
*   **The same route for another platform:** [Facebook Ads → Google Sheets](/blog/articles/free-facebook-ads-connector-to-google-sheets), [LinkedIn Ads → Google Sheets](/blog/articles/free-linkedin-ads-to-google-sheets-connector) and [TikTok Ads → Google Sheets](/blog/articles/free-tiktok-ads-to-google-sheets-connector). More free connectors are on the [connectors page](/connectors).

Check out our [GitHub repo](https://github.com/OWOX/owox-data-marts), leave us a ⭐ **star**, and let’s build better tools together.

## FAQ

## Frequently Asked Questions

Is there a direct X Ads (Twitter Ads) to Google Sheets connector?

No. The route is X Ads, then a data warehouse, then Google Sheets. An X Ads data mart of the Connector type loads your ad data into your data warehouse, and Google Sheets reads it from there through a report on the data mart or through the OWOX Data Marts extension.

What do I need to connect X Ads?

Your X Ads Account ID (it is in the address bar of ads.x.com) and the credentials of an X developer app with Ads API access: a Consumer Key, a Consumer Secret, an Access Token and an Access Token Secret. X has to approve the app for the Ads API first, with Standard access.

Which X Ads data can I load?

The Ad Performance endpoint, which loads into the x\_ads\_stats table, with the fields you select. The X Ads connector exposes no conversion fields, so conversions stay empty unless you bring them from another source.

How often does X Ads data refresh?

You set it with triggers. A Connector Run trigger loads new data into your data warehouse daily, weekly, monthly or on an interval, and a Report Run trigger pushes the result to your Google Sheets report. A manual backfill loads a custom date range; without dates, the first run imports from the first day of the previous month.

Can I use X Ads data in Excel?

Yes. Once the data is in your data warehouse, the OWOX Excel add-in can read the same data mart, so Excel and Google Sheets show the same numbers.

Is the X Ads connector free?

OWOX Data Marts is free and open source when you run it yourself, including the X Ads connector. For OWOX Cloud, see the pricing page. X itself decides what its Ads API access requires.

## Who wrote this

![Vadym Kramarenko](https://cdn.owox.com/www/webflow/6798e703afdf787334941cde_Vadym-Kramarenko.png/public)

[Vadym Kramarenko](/team/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.

[LinkedIn](https://www.linkedin.com/in/vadim-kramarenko/) · [All articles](/team/vadym-kramarenko)

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

## Related articles

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

[Google BigQuery · How to Connect BigQuery to Google Sheets: Three Ways · October 6, 2026](/blog/articles/bigquery-reports-in-google-sheets)

[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)

## 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
- [Vadym Kramarenko](https://www.owox.com/team/vadym-kramarenko) — /team/vadym-kramarenko.md
- [OWOX Data Marts](https://www.owox.com/app-signup)
- [why we built free data connectors for analysts](https://www.owox.com/blog/articles/free-open-source-connectors-for-analysts) — /blog/articles/free-open-source-connectors-for-analysts.md
- [marketing analytics](https://www.owox.com/blog/articles/marketing-analytics-helps-businesses-make-data-driven-decisions) — /blog/articles/marketing-analytics-helps-businesses-make-data-driven-decisions.md
- [CRM](https://www.owox.com/blog/articles/crm-and-online-data-integration-guide) — /blog/articles/crm-and-online-data-integration-guide.md
- [GA4](https://www.owox.com/blog/articles/an-in-depth-look-at-google-analytics-4) — /blog/articles/an-in-depth-look-at-google-analytics-4.md
- [dashboards](https://www.owox.com/product/dashboards) — /product/dashboards.md
- [data mart](https://www.owox.com/features/data-mart-management) — /features/data-mart-management.md
- [OWOX docs](https://docs.owox.com/)
- [BigQuery](https://www.owox.com/data-storages/google-bigquery) — /data-storages/google-bigquery.md
- [X Ads → BigQuery guide](https://www.owox.com/blog/articles/free-x-ads-to-bigquery-connector) — /blog/articles/free-x-ads-to-bigquery-connector.md
- [X Ads data source](https://www.owox.com/data-sources/x-ads) — /data-sources/x-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
- [OWOX MCP](https://www.owox.com/features/mcp) — /features/mcp.md
- [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 data](https://www.owox.com/blog/articles/blend-ga4-conversions-with-ad-spend) — /blog/articles/blend-ga4-conversions-with-ad-spend.md
- [governed MCP analytics](https://www.owox.com/blog/articles/governed-mcp-analytics) — /blog/articles/governed-mcp-analytics.md
- [BigQuery](https://www.owox.com/connectors/free-x-ads-connector-to-google-bigquery) — /connectors/free-x-ads-connector-to-google-bigquery.md
- [Snowflake](https://www.owox.com/connectors/free-x-ads-connector-to-snowflake) — /connectors/free-x-ads-connector-to-snowflake.md
- [Databricks](https://www.owox.com/connectors/free-x-ads-connector-to-databricks) — /connectors/free-x-ads-connector-to-databricks.md
- [AWS Athena](https://www.owox.com/connectors/free-x-ads-connector-to-aws-athena) — /connectors/free-x-ads-connector-to-aws-athena.md
- [AWS Redshift](https://www.owox.com/connectors/free-x-ads-connector-to-aws-redshift) — /connectors/free-x-ads-connector-to-aws-redshift.md
- [Facebook Ads → Google Sheets](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 → Google Sheets](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 → Google Sheets](https://www.owox.com/blog/articles/free-tiktok-ads-to-google-sheets-connector) — /blog/articles/free-tiktok-ads-to-google-sheets-connector.md
- [connectors page](https://www.owox.com/connectors) — /connectors.md
- [Google BigQuery · How to Connect BigQuery to Google Sheets: Three Ways · October 6, 2026](https://www.owox.com/blog/articles/bigquery-reports-in-google-sheets) — /blog/articles/bigquery-reports-in-google-sheets.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
