---
title: "Integrate Twitter Ads Data with Different Data Destinations"
canonical: "https://www.owox.com/data-sources/x-ads"
updated: "2026-09-29"
---

![X Ads logo](https://cdn.owox.ai/www/webflow/679d10b9ee1243aa6fc20616_502.svg/public)

# Collect Twitter (X) Ads data. Deliver reports. Automate AI Insights.

Easily collect Twitter Ads data with OWOX Data Marts, store in your data warehouse, automate reporting across major BI Tools and AI Insights (the ones that matter) delivered straight to corporate messengers on a schedule.

[Get started free](https://www.owox.com/app-signup)

![X Ads](https://cdn.owox.ai/www/portfolio-management-data-source/x-ads/hero/1.png/public)

## Available connectors

[Twitter Ads to Google Sheets Connector](/connectors/free-x-ads-connector-to-google-sheets)

[Twitter Ads to Looker Studio Connector](/connectors/free-x-ads-connector-to-looker-studio)

[X Ads Connector to Azure Synapse](/connectors/x-ads-connector-to-azure-synapse)

[X Ads Connector to ChatGPT](/connectors/x-ads-connector-to-chatgpt)

[X Ads Connector to Claude](/connectors/x-ads-connector-to-claude)

[X Ads Connector to Microsoft Excel](/connectors/x-ads-connector-to-microsoft-excel)

[X Ads Insights to Email](/connectors/x-ads-insights-to-email)

[X Ads Insights to Google Chat](/connectors/x-ads-insights-to-google-chat)

[X Ads Insights to Microsoft Teams](/connectors/x-ads-insights-to-microsoft-teams)

[X Ads Insights to Slack](/connectors/x-ads-insights-to-slack)

[X Ads to AWS Athena Connector](/connectors/free-x-ads-connector-to-aws-athena)

[X Ads to AWS Redshift Connector](/connectors/free-x-ads-connector-to-aws-redshift)

[X Ads to Databricks Connector](/connectors/free-x-ads-connector-to-databricks)

[X Ads to Google BigQuery Connector](/connectors/free-x-ads-connector-to-google-bigquery)

[X Ads to Snowflake Connector](/connectors/free-x-ads-connector-to-snowflake)

## Endpoints

## X Ads endpoints

[Documentation](https://docs.owox.com/packages/connectors/src/sources/xads/readme/)

10 X Ads endpoints you can import. Each lands in its own table in your warehouse.

*   ### [Accounts](#schema-accounts)

    Advertising accounts — name, business, country, timezone, and approval status.

    12 fields
*   ### [Ad Performance](#schema-ad-performance)

    Daily ad performance by placement — impressions, clicks, spend, engagements, and social actions.

    20 fields · Time series
*   ### [Ad Performance by Country](#schema-ad-performance-by-country)

    Daily ad performance broken down by country — impressions, clicks, spend, engagements, and social actions.

    21 fields · Time series
*   ### [All Cards](#schema-all-cards)

    All card types with full creative details — type, title, destination URL, call to action, and media.

    28 fields
*   ### [Campaigns](#schema-campaigns)

    Your campaigns — status, budget optimization, daily and total budget, and currency.

    19 fields
*   ### [Cards](#schema-cards)

    Website and app cards — type, URI, and components.

    8 fields
*   ### [Line Items](#schema-line-items)

    Line items within campaigns — bid strategy, goal, product type, budget, and schedule.

    33 fields
*   ### [Promoted Tweets](#schema-promoted-tweets)

    Tweets promoted as ads — status, approval, and links to their tweets and line items.

    8 fields
*   ### [Targeting Locations](#schema-targeting-locations)

    Reference table of location IDs with names and country codes — join targeting\_value with the country field in Ad Performance by Country.

    4 fields
*   ### [Tweets](#schema-tweets)

    Original tweets used as ad creatives — text, type, language, engagement counts, and card URI.

    34 fields

## Accounts schema

## X Ads Accounts schema

12 fields · `x_ads_accounts` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/accountFields.js)

Advertising accounts — name, business, country, timezone, and approval status.

| Field | Type | Description |
| --- | --- | --- |
| `name` | STRING | The name of the account |
| `business_name` | STRING | The business name associated with the account |
| `timezone` | STRING | The timezone of the account |
| `timezone_switch_at` | DATETIME | When the timezone was last switched |
| `country_code` | STRING | The country code of the account (e.g. SI) |
| `id` | STRING | The unique identifier for the account |
| `created_at` | DATETIME | When the account was created |
| `updated_at` | DATETIME | When the account was last updated |
| `industry_type` | STRING | The industry type of the account |
| `business_id` | STRING | The business identifier associated with the account |
| `approval_status` | STRING | The approval status of the account (e.g. ACCEPTED) |
| `deleted` | BOOLEAN | Whether the account is deleted |

## Ad Performance schema

## X Ads Ad Performance schema

20 fields · Time series · `x_ads_stats` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/statsFields.js)

Daily ad performance by placement — impressions, clicks, spend, engagements, and social actions.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | The unique identifier for the stats record. |
| `date` | STRING | The date for which the statistics were collected. |
| `placement` | STRING | The placement type (ALL\_ON\_TWITTER or PUBLISHER\_NETWORK). |
| `impressions` | INTEGER | Number of impressions. |
| `tweets_send` | INTEGER | Number of tweets sent. |
| `billed_charge_local_micro` | INTEGER | Billed amount in micros. |
| `qualified_impressions` | INTEGER | Number of qualified impressions. |
| `follows` | INTEGER | Number of follows. |
| `app_clicks` | INTEGER | Number of app clicks. |
| `retweets` | INTEGER | Number of retweets. |
| `unfollows` | INTEGER | Number of unfollows. |
| `likes` | INTEGER | Number of likes. |
| `engagements` | INTEGER | Number of engagements. |
| `clicks` | INTEGER | Number of clicks. |
| `card_engagements` | INTEGER | Number of card engagements. |
| `poll_card_vote` | INTEGER | Number of poll card votes. |
| `replies` | INTEGER | Number of replies. |
| `url_clicks` | INTEGER | Number of URL clicks. |
| `billed_engagements` | INTEGER | Number of billed engagements. |
| `carousel_swipes` | INTEGER | Number of carousel swipes. |

## Ad Performance by Country schema

## X Ads Ad Performance by Country schema

21 fields · Time series · `x_ads_stats_by_country` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/statsByCountryFields.js)

Daily ad performance broken down by country — impressions, clicks, spend, engagements, and social actions.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | The unique identifier for the stats record. |
| `date` | STRING | The date for which the statistics were collected. |
| `placement` | STRING | The placement type (ALL\_ON\_TWITTER or PUBLISHER\_NETWORK). |
| `country` | STRING | Location ID from X Ads (hex string, e.g. 96683cc9126741d1). Join with the targeting\_locations node to get the human-readable name and country code. |
| `impressions` | INTEGER | Number of impressions. |
| `tweets_send` | INTEGER | Number of tweets sent. |
| `billed_charge_local_micro` | INTEGER | Billed amount in micros. |
| `qualified_impressions` | INTEGER | Number of qualified impressions. |
| `follows` | INTEGER | Number of follows. |
| `app_clicks` | INTEGER | Number of app clicks. |
| `retweets` | INTEGER | Number of retweets. |
| `unfollows` | INTEGER | Number of unfollows. |
| `likes` | INTEGER | Number of likes. |
| `engagements` | INTEGER | Number of engagements. |
| `clicks` | INTEGER | Number of clicks. |
| `card_engagements` | INTEGER | Number of card engagements. |
| `poll_card_vote` | INTEGER | Number of poll card votes. |
| `replies` | INTEGER | Number of replies. |
| `url_clicks` | INTEGER | Number of URL clicks. |
| `billed_engagements` | INTEGER | Number of billed engagements. |
| `carousel_swipes` | INTEGER | Number of carousel swipes. |

## All Cards schema

## X Ads All Cards schema

28 fields · `x_ads_cards_all` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/cardAllFields.js)

All card types with full creative details — type, title, destination URL, call to action, and media.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | The unique identifier for the card |
| `name` | STRING | The name of the card |
| `card_type` | STRING | Type of the card (e.g. IMAGE\_APP\_DOWNLOAD, VIDEO\_WEBSITE) |
| `card_uri` | STRING | URI of the card |
| `created_at` | DATETIME | ISO-8601 timestamp when the card was created |
| `updated_at` | DATETIME | ISO-8601 timestamp when the card was last updated |
| `deleted` | BOOLEAN | Whether the card is deleted |
| `googleplay_app_id` | STRING | Google Play application ID |
| `country_code` | STRING | Country code associated with the app or destination |
| `wide_app_image` | STRING | URL to the wide-aspect-ratio image used by the app card |
| `image_display_width` | STRING | Width (in pixels) of the primary image displayed with the card |
| `image_display_height` | STRING | Height (in pixels) of the primary image displayed with the card |
| `app_cta` | STRING | Call-to-action used on the app card (e.g. INSTALL, OPEN) |
| `title` | STRING | Title shown on the card |
| `website_url` | STRING | Canonical website URL |
| `website_dest_url` | STRING | Destination URL used for clicks |
| `website_display_url` | STRING | Display URL shown on the card |
| `website_shortened_url` | STRING | Shortened (t.co) URL placed in the card |
| `video_url` | STRING | URL of the video file or VMAP |
| `video_hls_url` | STRING | HLS streaming URL |
| `video_poster_url` | STRING | Poster image displayed before video playback |
| `video_content_id` | STRING | Internal content identifier of the video |
| `video_owner_id` | STRING | User ID of the video owner |
| `content_duration_seconds` | STRING | Video duration in seconds |
| `video_width` | STRING | Original width of the video |
| `video_height` | STRING | Original height of the video |
| `video_poster_width` | STRING | Width of the video poster image |
| `video_poster_height` | STRING | Height of the video poster image |

## Campaigns schema

## X Ads Campaigns schema

19 fields · `x_ads_campaigns` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/campaignFields.js)

Your campaigns — status, budget optimization, daily and total budget, and currency.

| Field | Type | Description |
| --- | --- | --- |
| `name` | STRING | The name of the campaign |
| `budget_optimization` | STRING | Budget optimization strategy (e.g. LINE\_ITEM) |
| `reasons_not_servable` | ARRAY | Reasons why the campaign is not servable |
| `servable` | BOOLEAN | Whether the campaign is servable |
| `purchase_order_number` | STRING | Purchase order number |
| `effective_status` | STRING | Effective status of the campaign (e.g. PAUSED) |
| `daily_budget_amount_local_micro` | INTEGER | Daily budget amount in micros (nullable) |
| `funding_instrument_id` | STRING | ID of the funding instrument |
| `duration_in_days` | INTEGER | Duration of the campaign in days (nullable) |
| `standard_delivery` | BOOLEAN | Whether standard delivery is enabled (nullable) |
| `total_budget_amount_local_micro` | INTEGER | Total budget amount in micros (nullable) |
| `id` | STRING | The unique identifier for the campaign |
| `entity_status` | STRING | Entity status of the campaign |
| `frequency_cap` | INTEGER | Frequency cap (nullable) |
| `currency` | STRING | Currency code (e.g. USD) |
| `created_at` | DATETIME | Timestamp when the campaign was created |
| `updated_at` | DATETIME | Timestamp when the campaign was last updated |
| `deleted` | BOOLEAN | Whether the campaign is deleted |
| `account_id` | STRING | ID of the account |

## Cards schema

## X Ads Cards schema

8 fields · `x_ads_cards` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/cardFields.js)

Website and app cards — type, URI, and components.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | The unique identifier for the card. |
| `name` | STRING | The name of the card. |
| `card_type` | STRING | Type of the card. |
| `card_uri` | STRING | URI of the card. |
| `created_at` | DATETIME | When the card was created. |
| `updated_at` | DATETIME | When the card was last updated. |
| `deleted` | BOOLEAN | Whether the card is deleted. |
| `components` | ARRAY | Card components including media and buttons. |

## Line Items schema

## X Ads Line Items schema

33 fields · `x_ads_line_items` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/lineItemFields.js)

Line items within campaigns — bid strategy, goal, product type, budget, and schedule.

| Field | Type | Description |
| --- | --- | --- |
| `advertiser_user_id` | STRING | ID of the advertiser user |
| `name` | STRING | Name of the line item |
| `placements` | ARRAY | List of placement targets (e.g. ALL\_ON\_TWITTER) |
| `start_time` | DATETIME | Line item start time |
| `bid_amount_local_micro` | INTEGER | Bid amount in micro-currency units |
| `advertiser_domain` | STRING | Domain of the advertiser |
| `target_cpa_local_micro` | INTEGER | Target CPA (cost per action) in micro-currency units |
| `primary_web_event_tag` | STRING | Primary web event tag identifier |
| `goal` | STRING | Line item goal/objective (e.g. APP\_INSTALLS) |
| `daily_budget_amount_local_micro` | INTEGER | Daily budget in micro-currency units |
| `product_type` | STRING | Product type (e.g. PROMOTED\_TWEETS) |
| `end_time` | DATETIME | Line item end time (nullable) |
| `funding_instrument_id` | STRING | ID of the funding instrument |
| `bid_strategy` | STRING | Bidding strategy (e.g. AUTO) |
| `duration_in_days` | INTEGER | Duration in days (nullable) |
| `standard_delivery` | BOOLEAN | Whether standard delivery is enabled |
| `total_budget_amount_local_micro` | INTEGER | Total budget in micro-currency units (nullable) |
| `objective` | STRING | Campaign objective (duplicate of goal in some APIs) |
| `id` | STRING | Unique identifier of the line item |
| `entity_status` | STRING | Status of the line item (e.g. ACTIVE, PAUSED) |
| `automatic_tweet_promotion` | BOOLEAN | Whether automatic tweet promotion is enabled |
| `frequency_cap` | INTEGER | Frequency cap for ad serving |
| `android_app_store_identifier` | STRING | Android app store identifier |
| `categories` | ARRAY | Array of category labels |
| `currency` | STRING | Currency code (e.g. USD) |
| `pay_by` | STRING | Payment method (e.g. IMPRESSION) |
| `created_at` | DATETIME | Timestamp when the line item was created |
| `ios_app_store_identifier` | STRING | iOS app store identifier |
| `updated_at` | DATETIME | Timestamp when the line item was last updated |
| `campaign_id` | STRING | ID of the parent campaign |
| `creative_source` | STRING | Source of the creative (e.g. MANUAL) |
| `audience_expansion` | STRING | Audience expansion setting (e.g. EXPANDED) |
| `deleted` | BOOLEAN | Whether the line item is marked as deleted |

## Promoted Tweets schema

## X Ads Promoted Tweets schema

8 fields · `x_ads_promoted_tweets` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/promotedTweetFields.js)

Tweets promoted as ads — status, approval, and links to their tweets and line items.

| Field | Type | Description |
| --- | --- | --- |
| `line_item_id` | STRING | ID of the parent line item |
| `id` | STRING | Unique identifier for the promoted tweet |
| `entity_status` | STRING | Status of the promoted tweet (e.g., ACTIVE, PAUSED) |
| `created_at` | DATETIME | Timestamp when the promoted tweet was created |
| `updated_at` | DATETIME | Timestamp when the promoted tweet was last updated |
| `approval_status` | STRING | Approval status of the promoted tweet (e.g., ACCEPTED, REJECTED) |
| `tweet_id` | STRING | ID of the original tweet |
| `deleted` | BOOLEAN | Flag indicating whether the promoted tweet has been deleted |

## Targeting Locations schema

## X Ads Targeting Locations schema

4 fields · `x_ads_targeting_locations` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/targetingLocationsFields.js)

Reference table of location IDs with names and country codes — join targeting\_value with the country field in Ad Performance by Country.

| Field | Type | Description |
| --- | --- | --- |
| `targeting_value` | STRING | Unique hex ID for this location (e.g. 96683cc9126741d1). Use this to join with the country field in stats\_by\_country. |
| `name` | STRING | Human-readable location name (e.g. United States, California). |
| `location_type` | STRING | Type of location: COUNTRIES, REGIONS, CITIES, METROS, or POSTAL\_CODES. |
| `country_code` | STRING | ISO 2-letter country code (e.g. US, DE, NL). |

## Tweets schema

## X Ads Tweets schema

34 fields · `x_ads_tweets` · [Schema on GitHub](https://github.com/OWOX/owox-data-marts/blob/main/packages/connectors/src/Sources/XAds/XAdsAPIReference/tweetFields.js)

Original tweets used as ad creatives — text, type, language, engagement counts, and card URI.

| Field | Type | Description |
| --- | --- | --- |
| `coordinates` | OBJECT | The geographic coordinates (latitude/longitude) of the tweet, if available. |
| `retweeted` | BOOLEAN | Whether this tweet is a retweet of another tweet. |
| `name` | STRING | A custom name or label for the tweet. |
| `conversation_settings` | STRING | Who can reply or interact with the tweet (e.g. EVERYONE). |
| `source` | STRING | HTML markup indicating the client or interface used to post the tweet. |
| `entities` | OBJECT | Parsed entities in the tweet (mentions, hashtags, URLs, media, etc.). |
| `display_text_range` | ARRAY | Start/end indices for which portion of the tweet text to display. |
| `favorite_count` | INTEGER | Number of times the tweet has been liked. |
| `in_reply_to_status_id_str` | STRING | ID (as string) of the tweet this one is replying to. |
| `geo` | OBJECT | Deprecated geographic information, if present. |
| `id_str` | STRING | The tweet’s unique identifier, as a string. |
| `scopes` | OBJECT | Visibility scopes (e.g. { followers: false }). |
| `in_reply_to_user_id` | INTEGER | Numeric ID of the user this tweet is replying to. |
| `truncated` | BOOLEAN | Whether the tweet text has been truncated. |
| `retweet_count` | INTEGER | Number of times this tweet has been retweeted. |
| `scheduled_status` | STRING | Scheduled status (e.g. pending scheduling), if any. |
| `id` | INTEGER | The tweet’s unique identifier, as a number. |
| `in_reply_to_status_id` | INTEGER | Numeric ID of the tweet this one is replying to. |
| `possibly_sensitive` | BOOLEAN | Whether the tweet may contain sensitive content. |
| `nullcast` | BOOLEAN | Whether the tweet is nullcast (not shown on timeline). |
| `created_at` | STRING | Creation timestamp of the tweet. |
| `place` | OBJECT | Place (location) associated with the tweet, if any. |
| `scheduled_at` | STRING | When the tweet was scheduled for posting. |
| `tweet_type` | STRING | Type of tweet (e.g. PUBLISHED). |
| `favorited` | BOOLEAN | Whether the authenticated user has liked the tweet. |
| `card_uri` | STRING | URI of the associated Twitter Card. |
| `full_text` | STRING | The full text content of the tweet. |
| `lang` | STRING | Language code of the tweet (e.g. en). |
| `contributors` | ARRAY | Array of contributors to the tweet, if any. |
| `in_reply_to_screen_name` | STRING | Screen name of the user this tweet is replying to. |
| `in_reply_to_user_id_str` | STRING | ID (as string) of the user this tweet is replying to. |
| `user` | OBJECT | The user object of the author (contains id, id\_str, etc.). |
| `tweet_id` | STRING | Duplicate of id\_str (the tweet’s ID as a string). |
| `extended_entities` | OBJECT | Extended media entities (e.g. video variants, additional media info). |

## S01 · Why teams pick OWOX

## Why collect Twitter (X) Ads data into your warehouse with OWOX?

Your Twitter (X) Ads data shouldn’t be trapped in a platform you can’t query. OWOX collects it into your warehouse on autopilot — no per-connector fees, no vendor lock-in. The entire platform is open-source on GitHub, so you can self-host it today and never worry about losing access to your own data pipelines.

![The Set Up Connector dialog in OWOX Data Marts at step 1 of 5, listing the connectors available to choose from.](https://cdn.owox.ai/www/webflow/6a043cc99b38463750b8ea95_connectros-data-source-list.png/public)

### Collect to your warehouse

No per-connector pricing — connect as many sources as you need, all included

![The Create Scheduled Trigger dialog in OWOX Data Marts, setting a connector run to repeat daily at 09:00.](https://cdn.owox.ai/www/portfolio-management-data-source/criteo/body/1.png/public)

### Zero-maintenance syncs

Fully open-source on GitHub — self-host anytime, no vendor lock-in, your data stays yours

![The Joined Data Marts SQL dialog in OWOX Data Marts, showing the generated SQL that joins an orders data mart with unified ad spend and reporting it as valid.](https://cdn.owox.ai/www/portfolio-management-data-source/criteo/body/2.png/public)

### Full-funnel joins

Full transparency and control — every query, every schema, every schedule is visible and auditable

[Get started free →](https://www.owox.com/app-signup)

## How it works

![OWOX Data Marts data setup for Twitter (X) Ads, with the Twitter (X) Ads input source feeding Google BigQuery, AWS Athena, Snowflake, Amazon Redshift and Databricks.](https://cdn.owox.ai/www/portfolio-management-data-source/x-ads/hero/1.png/public)

R01 · Collect

## Collect all your Twitter (X) Ads data with zero engineering

Pull everything your company needs from Twitter (X) Ads without touching code or maintaining custom scripts. OWOX Data Marts handle the heavy lifting.

*   Your Twitter (X) Ads data is stored in one place – your own infrastructure. OWOX Data Marts automatically land your data into BigQuery, Snowflake, or Redshift.
*   Your Twitter (X) Ads data lands on a schedule: clean, complete, and ready to re-use across reports, dashboards, BI tools, and spreadsheets.
*   No API maintenance, no broken scripts — just reliable daily syncs

[Explore data marts →](https://www.owox.com/app-signup)

![OWOX Data Marts data setup for Twitter (X) Ads, with Twitter (X) Ads data delivered to Google Sheets, Looker Studio, Slack, Microsoft Teams and email.](https://cdn.owox.ai/www/portfolio-management-data-source/x-ads/body/1.png/public)

R02 · Report

## Build reports with Twitter (X) Ads data that everyone trusts

Once your Twitter (X) Ads data lands in your warehouse, OWOX Data Marts make it instantly reusable across spreadsheets and BI tools.

*   Pre-built data marts for campaign performance, spend, and conversions
*   Join Twitter (X) Ads with CRM, GA4, and revenue data in one query
*   Self-serve reporting for marketing teams — no analyst tickets needed

[Explore data marts →](https://www.owox.com/app-signup)

![The OWOX Data Marts side panel open in Google Sheets, building an eCommerce report from a products data mart with its columns selected.](https://cdn.owox.ai/www/webflow/69f4fbc009ea60814be448c5_product-frame.webp/public)

R03 · Visualize

## Visualize Twitter (X) Ads data instantly in your BI tools

With OWOX Data Marts, your Twitter (X) Ads data becomes instantly available for charts, dashboards, pivots, and spreadsheets.

*   Whether you use Google Sheets, Looker Studio, Excel, or Power BI, OWOX delivers clean, scheduled Twitter (X) Ads data that just works.
*   Deliver to Looker Studio, Google Sheets, Power BI, or Excel automatically
*   Same numbers everywhere — one source of truth for all stakeholders

[Get started free →](https://www.owox.com/app-signup)

## S03 · Eight outcomes

## Why use OWOX connectors to collect your Twitter (X) Ads data?

Eight outcomes you get the moment your data marts go live.

### Full picture, one screen

Send X Ads spend and engagement into dashboards from one governed source — performance you keep regardless of API churn.

### Beyond native dashboards

The X API changes often; in your warehouse your historical ad data survives whatever the platform does next.

### Your questions, your reports

Build reports that answer your questions — CPA, ROAS, engagement cost — on your definitions, not X’s defaults.

### Faster decisions, better data

Durable data means year-over-year comparisons hold even as the platform’s own reporting shifts.

### Always fresh, always complete

OWOX Data Marts automate X Ads collection on a schedule — campaigns, ads, and spend — with no manual exports.

### All sources, one warehouse

Merge X Ads with every other channel and revenue for one blended acquisition view.

### Zero manual work

Automate transfer into BigQuery, Snowflake, or Redshift — governed and reusable across every report, saving time and removing errors.

### Blended reports

Once X data lands in governed Data Marts, anyone can ask in their own AI chat — “what did X actually return last quarter?” — every number tracing to analyst-written SQL.

## What users are saying

## Not testimonials. Comment threads.

Real things real customers said — each quote pinned to a specific claim, straight from the quotes database.

A3 · re: trusting AI

![Nodari Rizun](https://cdn.owox.ai/www/webflow/6a7b298b2ca5055443187566_nodari-headshot.png/public) Nodari Rizun · Founder & CEO, Pürblack®

> _“AI, by the nature of the models, will hallucinate. And because of that, you need something which will create guardrails to ensure that there are no hallucinations, that you can trust your data.”_

C9 · re: one source of truth

![Mark Simmons](https://cdn.owox.ai/www/webflow/6a7b298b2b9daab0ade631d7_mark-headshot.png/public) Mark Simmons · CMO, Pürblack®

> _“We had six or seven different channels and no single source of truth — it was almost impossible, a lot of guesswork.”_

E7 · re: getting time back

![Nodari Rizun](https://cdn.owox.ai/www/webflow/6a7b298b2ca5055443187566_nodari-headshot.png/public) Nodari Rizun · Founder & CEO, Pürblack®

> _“We regained time. And time is the one resource that never comes back.”_

## Start collecting Twitter (X) Ads data for free

Set up your Twitter (X) Ads connector in minutes. No credit card, no engineering team required.

[Get started free](https://www.owox.com/app-signup)

![X Ads](https://cdn.owox.ai/www/webflow/6a043cc9dce0415e2d0f6a01_data-marts-list-connector.png/public)

## References

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.

- [Get started free](https://www.owox.com/app-signup)
- [Twitter Ads to Google Sheets Connector](https://www.owox.com/connectors/free-x-ads-connector-to-google-sheets) — /connectors/free-x-ads-connector-to-google-sheets.md
- [Twitter Ads to Looker Studio Connector](https://www.owox.com/connectors/free-x-ads-connector-to-looker-studio) — /connectors/free-x-ads-connector-to-looker-studio.md
- [X Ads Connector to Azure Synapse](https://www.owox.com/connectors/x-ads-connector-to-azure-synapse) — /connectors/x-ads-connector-to-azure-synapse.md
- [X Ads Connector to ChatGPT](https://www.owox.com/connectors/x-ads-connector-to-chatgpt) — /connectors/x-ads-connector-to-chatgpt.md
- [X Ads Connector to Claude](https://www.owox.com/connectors/x-ads-connector-to-claude) — /connectors/x-ads-connector-to-claude.md
- [X Ads Connector to Microsoft Excel](https://www.owox.com/connectors/x-ads-connector-to-microsoft-excel) — /connectors/x-ads-connector-to-microsoft-excel.md
- [X Ads Insights to Email](https://www.owox.com/connectors/x-ads-insights-to-email) — /connectors/x-ads-insights-to-email.md
- [X Ads Insights to Google Chat](https://www.owox.com/connectors/x-ads-insights-to-google-chat) — /connectors/x-ads-insights-to-google-chat.md
- [X Ads Insights to Microsoft Teams](https://www.owox.com/connectors/x-ads-insights-to-microsoft-teams) — /connectors/x-ads-insights-to-microsoft-teams.md
- [X Ads Insights to Slack](https://www.owox.com/connectors/x-ads-insights-to-slack) — /connectors/x-ads-insights-to-slack.md
- [X Ads to AWS Athena Connector](https://www.owox.com/connectors/free-x-ads-connector-to-aws-athena) — /connectors/free-x-ads-connector-to-aws-athena.md
- [X Ads to AWS Redshift Connector](https://www.owox.com/connectors/free-x-ads-connector-to-aws-redshift) — /connectors/free-x-ads-connector-to-aws-redshift.md
- [X Ads to Databricks Connector](https://www.owox.com/connectors/free-x-ads-connector-to-databricks) — /connectors/free-x-ads-connector-to-databricks.md
- [X Ads to Google BigQuery Connector](https://www.owox.com/connectors/free-x-ads-connector-to-google-bigquery) — /connectors/free-x-ads-connector-to-google-bigquery.md
- [X Ads to Snowflake Connector](https://www.owox.com/connectors/free-x-ads-connector-to-snowflake) — /connectors/free-x-ads-connector-to-snowflake.md
- [Documentation](https://docs.owox.com/packages/connectors/src/sources/xads/readme)
