OpenAI opened ChatGPT Ads to self-serve buyers on May 5, 2026 (announcement), alongside a Conversions API, a JavaScript pixel, and a programmatic Advertiser API. The day after, we shipped the OpenAI Ads integration in PingAura — read-only, end-to-end, on every plan including Free.
One API key. One dashboard. Paid ChatGPT performance next to organic AI visibility. PingAura validates the key, stores it encrypted at rest, and the Ads dashboard immediately renders live data — total spend, impressions, clicks, CTR, CPC, and CPM — in your account currency. A dedicated ChatGPT Ads Agent lives inside the AI Coworker and answers questions over your campaigns and creatives.
Why this matters
ChatGPT became a discovery surface before it became an ad platform. PingAura already maps your organic AI visibility — which models cite you, which prompts surface you, where your share-of-voice is leaking. The OpenAI Ads integration ships on every plan, including Free.
The question stopped being "are we seen on ChatGPT?" and started being "is the paid layer pulling its weight against the organic layer?"
Customers cannot answer that with two tabs open. The paid metrics need to live next to the organic ones, in one operating view. That is the wedge.
We shipped this 24 hours after OpenAI opened the Ads Manager to self-serve buyers. Beta customers are already monitoring campaigns across both layers.
Pulling raw insights into a dashboard or a generic agent flow is the table-stakes half of this problem. The harder, more durable layer is joining paid performance with the organic AI visibility data that PingAura already owns — prompts, citations, share-of-voice trends, site audits, opportunities. That is the layer this integration is the foundation for.
Paid ChatGPT performance alongside organic AI visibility in one PingAura dashboard.
Engineering Deep-Dive
Connector
Connect your account with an API key from ads.openai.com on the Ads page. OpenAI Ads is another provider in our existing integrations stack rather than a parallel one. The same stack already powers Google Search Console, Google Analytics 4, Cloudflare, WordPress, Slack, webhooks, PostHog, and Bing Webmaster — every connector inherits role-based access control, health monitoring, audit logging, and encrypted credential storage by default. Adding a new provider is configuration, not architecture.
Encryption and key handling
The OpenAI Ads API key is encrypted with AES-256-GCM at the application layer. Decryption happens in-process only when PingAura needs to call the OpenAI Ads API on your behalf — the plaintext never reaches the browser, never leaves the server-side request, and is never logged.
The connect action validates the user-supplied key against the OpenAI Ads account endpoint before persisting anything. A 401 surfaces as "invalid API key", a 403 as "no ad account access", and a network error as "could not reach OpenAI Ads API". On success we cache the returned currency code and timezone so the dashboard can format money values without a second round-trip.
Dashboard
The Ads page is server-rendered. On first load it resolves your workspace, looks up your active OpenAI Ads connector, and either renders the connect card or kicks off three parallel insights calls: an account-level rollup, a daily series over the last 30 days, and the top five ads ranked by spend.
- Currency-correct rendering. All money is rendered in the ad account's currency (INR, EUR, GBP, USD), not assumed-USD. The OpenAI Ads API returns monetary fields in micros — we preserve micros internally and convert only at the rendering boundary, so we never lose precision through repeated rounding.
Those calls run in parallel with independent failure handling. A partial failure — say the rollup succeeds but the daily series times out — still gets you a populated summary card, with a soft banner noting which panel is stale. Both critical calls failing flips to an error path. If the failure is auth-shaped (401, 403, 404), we mark the connector unhealthy and surface a "reconnect" prompt. Transient failures (timeout, 429, 5xx) leave the connector healthy and show a "we'll retry" notice.
ChatGPT Ads Agent in the AI Coworker
We started by folding ads into the existing Insights Agent — visibility, citations, AI traffic, and now ads. We walked it back. Two reasons:
- The Insights Agent's instructions were already optimized for organic visibility. Mixing a paid-ads vocabulary into the same agent diluted both.
- The orchestrator routes to roles, not tools. Customers asking "how is my ad spend trending?" should see a clean ChatGPT Ads Agent working — not buried under a generic "Insights" pill.
So we created a new ChatGPT Ads Agent with three read-only tools:
- Account Summary — account roll-up over the last 7, 30, or 90 days.
- Campaign Performance — campaigns with per-campaign performance, status, schedule, budget, and country targeting.
- Top Performers — ad-level ranking by spend, clicks, impressions, CTR, CPC, or CPM.
Each tool returns one of four named states the agent is taught to handle: not connected, plan-locked, error, or real data — with an extra flag for "the account is connected but had no spend in the window". LLMs handle structured failure modes far better than they handle exceptions; giving the agent a finite, named set of states to dispatch on is the difference between graceful degradation and a hallucinated "I cannot help right now."
Operational details
- The integration is account-wide, not domain-scoped. Unlike GSC and GA4, an OpenAI Ads API key is keyed to one ad account. We store it on the team account, and every domain in the workspace shares the connector.
If you have an OpenAI Ads account, head to the Ads tab in your PingAura workspace and paste your API key.
Not running ChatGPT Ads yet? Read our complete guide → /blog/chatgpt-ads-the-new-era-of-advertising
Read-only is phase one. Phase two unifies paid and organic into a single AI visibility score — coming next quarter.
— Abhay Engineering Lead, PingAura


