Creating the data source
Requirements
- Admin access (or permission to generate API keys) on the ChatGPT Ads account.
How to connect
- Go to ads.openai.com and sign in to the ads account you want to connect.
- Open Settings in the menu.
- Generate (or copy) the account's API key.
- In Kondado, create a new ChatGPT Ads data source and paste the value into the API Key field.
- Save and create the integration you need.
Each API key belongs to a single ads account. If you manage several accounts, create a separate data source with each account's own key.
Pipelines
Summary
Relationship chart
Click to expand
Ad account metadata
This pipeline is free
Replication type: Full
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Ad account identifier. |
|
|
text |
[en] Ad account name. |
|
|
text |
[en] Main website associated with the account. |
|
|
text |
[en] Account preview link. |
|
|
text |
[en] Ad account status. |
|
|
text |
[en] Account time zone. Defines how report days are cut. |
|
|
text |
[en] Account currency. Every monetary value in this data source is in this currency. |
|
|
text |
[en] Account review status. |
|
|
text |
[en] Reason given in the account review. |
Ad group metadata
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Ad group identifier. |
|
|
text |
[en] Campaign identifier. |
|
|
text |
[en] Ad group name. |
|
|
text |
[en] Ad group description. |
|
|
text |
[en] Ad group status. |
|
|
timestamp |
[en] Record creation date and time. |
|
|
timestamp |
[en] Date and time of the last change to the record. |
|
|
text |
[en] Context signals used to target the ad group. |
|
|
text |
[en] Product feed associated with the ad group. |
|
|
text |
[en] Billed event of the ad group. |
|
|
text |
[en] Ad group bidding strategy (for example, maximize conversions). |
|
|
float |
[en] Ad group maximum bid, in the account currency. |
|
|
text |
[en] External identifier of the ad group set by the advertiser or by the tool that created it. |
Ad performance
Replication type: Incremental with update window
Parameters:
- Update window (days): How many days back are reprocessed on each run. Conversions may be attributed up to 30 days after the click.
- Breakdown: Optional segmentation of the metrics. With a breakdown, revenue metrics are not available.
- Grouping period: Hour, day or month. Hour accepts neither breakdown nor conversion/revenue metrics.
- Start date: Read data from this date on. The API only serves the last 5 years.
- Ad account: Ad account reached by the API key set on the data source.
- Entity: Level at which metrics are aggregated. Each level also carries the ids and names of the levels above it.
Relationships:
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Ad account identifier. |
|
|
date |
[en] Day the row refers to, in the ad account time zone. On monthly grouping it is the first day of the month. |
|
|
text |
[en] Campaign identifier. |
|
|
text |
[en] Ad group identifier. |
|
|
text |
[en] Ad identifier. |
|
|
text |
[en] Product feed identifier. |
|
|
text |
[en] Item identifier inside the product feed. |
|
|
text |
[en] Product title. |
|
|
text |
[en] Short product description. |
|
|
text |
[en] Long product description. |
|
|
text |
[en] Product destination link. |
|
|
text |
[en] Product image. |
|
|
text |
[en] Product brand. |
|
|
text |
[en] Product seller name. |
|
|
text |
[en] Product price, as formatted text (not numeric). |
|
|
text |
[en] Product availability in the feed. |
|
|
int |
[en] Hour of day (0 to 23) the row refers to, in the ad account time zone. Present only on hourly grouping. |
|
|
text |
[en] Ad account time zone, in which the dates and hours of this report are expressed. |
|
|
text |
[en] Ad account name. |
|
|
text |
[en] Main website associated with the ad account. |
|
|
text |
[en] Campaign name. |
|
|
text |
[en] Campaign description. |
|
|
text |
[en] Campaign status (enabled, paused, archived). |
|
|
timestamp |
[en] Scheduled campaign start. |
|
|
timestamp |
[en] Scheduled campaign end. |
|
|
float |
[en] Campaign lifetime spend limit, in the account currency. Empty when the campaign only has a daily limit. |
|
|
float |
[en] Campaign daily spend limit, in the account currency. Useful to track spend pacing against the cap. |
|
|
text |
[en] Ad group name. |
|
|
text |
[en] Ad group description. |
|
|
text |
[en] Ad group status. |
|
|
text |
[en] Internal ad name. |
|
|
text |
[en] Displayed ad title. |
|
|
text |
[en] Ad copy text. |
|
|
text |
[en] Ad destination link. |
|
|
text |
[en] Ad status. |
|
|
text |
[en] Ad review outcome (in review, approved or rejected). An ad only serves once approved and with campaign and ad group enabled. |
|
|
int |
[en] Impressions — number of times the ad was shown. |
|
|
int |
[en] Clicks — number of clicks on the ad. Only populated when explicitly requested in the projection. |
|
|
float |
[en] Amount spent in the period, in the account currency. |
|
|
float |
[en] Click-through rate — clicks divided by impressions. Ratio of the row itself: not additive — when aggregating days or entities, recompute from the sums of spend, clicks, impressions and conversions. On the current day it may diverge from the totals until the day closes. |
|
|
float |
[en] Cost per click — spend divided by clicks. Ratio of the row itself: not additive — when aggregating days or entities, recompute from the sums of spend, clicks, impressions and conversions. On the current day it may diverge from the totals until the day closes. |
|
|
float |
[en] Cost per thousand impressions — spend divided by impressions, times a thousand. Ratio of the row itself: not additive — when aggregating days or entities, recompute from the sums of spend, clicks, impressions and conversions. On the current day it may diverge from the totals until the day closes. |
|
|
int |
[en] Conversions attributed in the period. Equals click-through conversions — do not add it to the other conversion columns. |
|
|
float |
[en] Cost per conversion: spend divided by number of conversions. Empty when there were no conversions. Ratio of the row itself: not additive — when aggregating days or entities, recompute from the sums of spend, clicks, impressions and conversions. On the current day it may diverge from the totals until the day closes. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
float |
[en] Post-click conversion rate: conversions divided by clicks. Ratio of the row itself: not additive — when aggregating days or entities, recompute from the sums of spend, clicks, impressions and conversions. On the current day it may diverge from the totals until the day closes. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
float |
[en] Return on ad spend: attributed revenue divided by spend. Ratio of the row itself: not additive — when aggregating days or entities, recompute from the sums of spend, clicks, impressions and conversions. On the current day it may diverge from the totals until the day closes. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
float |
[en] Value of sales attributed to the ads in the period. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
int |
[en] Number of sales attributed to the ads in the period. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
text |
[en] Currency of the attributed sales value (ISO code, e.g. BRL). Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
float |
[en] Value of attributed sales counted on the order-created event. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
text |
[en] Currency of the order-created attributed sales value (ISO code). Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
float |
[en] Return on ad spend computed from order-created sales. Available only for dates from 2026-04-15 on (a limit set by the ads platform, subject to change); earlier periods are empty. |
|
|
int |
[en] Conversions attributed to a view of the ad (no click), with a one-day window. Complementary to the conversions column — which already counts click-through only — and must not be added to it for cost-per-acquisition purposes. Available on daily grouping without breakdown. |
|
|
text |
[en] Country the impression originated from. |
|
|
text |
[en] Device type the impression occurred on. |
|
|
text |
[en] Platform the ad was shown on (Android app, iOS app or web). |
Ad preview
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Identifier of the ad this preview refers to. |
|
|
text |
[en] HTML snippet with an iframe that renders the ad preview. NOTE: the address inside the iframe EXPIRES 24 HOURS after it was generated — after that the frame renders empty. The table is fully rewritten on every run precisely because of this; for the preview to keep working, the integration must run at least once a day. |
|
|
timestamp |
[en] When this preview was generated. Use it to tell whether the iframe is still valid: 24 hours after this timestamp it has expired. |
Ad metadata
This pipeline is free
Replication type: Full
Relationships:
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Ad identifier. |
|
|
text |
[en] Ad group identifier. |
|
|
text |
[en] Campaign identifier. |
|
|
text |
[en] Internal ad name. |
|
|
text |
[en] Ad status. |
|
|
text |
[en] Ad review outcome (in review, approved or rejected). An ad only serves once approved and with campaign and ad group enabled. |
|
|
text |
[en] Detailed ad review status. |
|
|
text |
[en] Reason given in the ad review. |
|
|
text |
[en] Creative format (for example, chat card or product ad template). |
|
|
text |
[en] Headline shown in the ad. |
|
|
text |
[en] Main text shown in the ad. |
|
|
text |
[en] Ad destination URL, including the configured tracking (UTM) parameters. |
|
|
text |
[en] Internal identifier of the image file uploaded for the ad; not an image URL. |
|
|
text |
[en] Address of the image used in the ad. Empty when the image was uploaded rather than referenced by address. |
|
|
text |
[en] Price text shown in the ad, when the format uses a price. |
|
|
text |
[en] Reasons why the ad is not being shown, as JSON (list). Empty when there is no impediment. |
|
|
timestamp |
[en] Record creation date and time. |
|
|
timestamp |
[en] Date and time of the last change to the record. |
Campaign metadata
This pipeline is free
Replication type: Full
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Campaign identifier. |
|
|
text |
[en] Campaign name. |
|
|
text |
[en] Campaign description. |
|
|
text |
[en] Campaign status. |
|
|
text |
[en] Campaign operating mode. |
|
|
timestamp |
[en] Record creation date and time. |
|
|
timestamp |
[en] Date and time of the last change to the record. |
|
|
timestamp |
[en] Scheduled campaign start. |
|
|
timestamp |
[en] Scheduled campaign end. |
|
|
text |
[en] Campaign bidding strategy. |
|
|
text |
[en] Event the campaign is billed on (for example, click). |
|
|
text |
[en] Campaign objective (for example, clicks or conversions). |
|
|
text |
[en] Identifier of the product catalog used by the campaign, when it advertises products. |
|
|
float |
[en] Campaign lifetime spend limit, in the account currency. |
|
|
float |
[en] Campaign daily spend limit, in the account currency. |
|
|
text |
[en] Ids of the conversion events associated with the campaign, as JSON (list of strings). |
|
|
text |
[en] Countries included in the campaign targeting, as JSON (list of country codes). |
Conversion event metadata
This pipeline is free
Replication type: Full
Relationships:
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Conversion event setting identifier. |
|
|
text |
[en] Conversion event setting name. |
|
|
text |
[en] Conversion event type. |
|
|
text |
[en] Custom event name, when present. |
|
|
int |
[en] Attribution window in days configured for the event. |
|
|
int |
[en] View-through attribution window in days: how many days after seeing the ad (without clicking) a conversion is still attributed to it. |
|
|
text |
[en] Ad account identifier. |
|
|
text |
[en] Ids of the sources (pixels or integrations) feeding the event, as JSON (list of strings). |
|
|
text |
[en] Conversion data sources (pixel or server-to-server integration) linked to this event, as JSON (list of objects with id and name). |
|
|
text |
[en] Campaigns linked to this conversion event setting, as JSON (list of objects with id and name). |
|
|
boolean |
[en] Whether the setting is archived. |
|
|
int |
[en] Version of the event setting. |
Custom audience metadata
This pipeline is free
Replication type: Full
| Campo | Tipo | |
|---|---|---|
|
text |
[en] Custom audience identifier. |
|
|
text |
[en] Custom audience name. |
|
|
text |
[en] Custom audience description. |
|
|
text |
[en] Custom audience status. |
|
|
timestamp |
[en] Record creation date and time. |
|
|
timestamp |
[en] Date and time of the last change to the record. |
|
|
text |
[en] Hash specification version used when uploading identifiers. |
|
|
text |
[en] Approximate range of the number of uploaded identifiers (e.g. '1000-5000'). The exact number is not disclosed, for privacy. |
|
|
text |
[en] Range of matched identifiers. Also a text range, not a number. |
|
|
text |
[en] Range of matched users. Also a text range, not a number. |
|
|
text |
[en] Range of invalid identifiers. Also a text range, not a number. |
|
|
int |
[en] Current revision number of the audience membership list. |
Notes
Important notes about ChatGPT Ads data:
- The API only serves the last 5 years of data.
- What each grouping period returns: daily, every metric (media, conversions, revenue and ROAS); monthly, media and revenue/ROAS without the conversions column (the API only computes conversions per day); hourly, media metrics only (impressions, clicks, spend, CTR, CPC, CPM), no conversions and no revenue.
- Hourly grouping also accepts no breakdown (product, country, device or platform).
- With any breakdown, revenue and ROAS metrics are not returned. The conversions column stays available only on the country and device breakdowns, and only with daily grouping; product and platform keep media metrics only.
- Revenue and ROAS metrics (CPA, attributed sales, orders) have their own date floor: they only exist from 2026-04-15 on (a limit set by the ads platform, subject to change), unlike the general 5-year limit that applies to media and conversions. Periods before that floor carry these columns empty.
- There is no age or gender breakdown in the ChatGPT Ads API.
- Same-day rates (CTR, CPC, CPM, CPA, ROAS) are ratios of the row itself, are not additive and only settle at end of day. To aggregate, recompute from the sums of spend, clicks, impressions and conversions.
- Conversions can be attributed up to 30 days after the click, which is why the default update window is 30 days.
- The ad preview table returns an HTML iframe that expires after 24 hours; the integration must run at least once a day for the preview to stay valid.
- Part of this documentation was automatically generated by AI and may contain errors. We recommend verifying critical information