All articles

Why ChatGPT Ads Conversion Totals Disagree: A Reconciliation Workflow

Reconcile API, Ads Manager, analytics, and business records by matching definitions, attribution windows, timezone, and reporting time basis.

An abstract conversion path connects conversation cards, chart bars and a target.

When ChatGPT Ads conversion totals disagree, compare definitions before changing campaigns: reporting surface, metric scope, dates, timezone, attribution settings, filters and extraction time. Then reconcile business records, event dispatches and report boundaries in layers. GPTAd's workflow preserves unresolved differences explicitly; it does not assume that every system should report the same total or that attribution proves causality.

Reviewed October 15, 2026. Reporting definitions can change. GPTAd's workflow is an independent analytical recommendation, not a guarantee that different systems will match.

Start a reconciliation with a written question: “Why does this report differ from that report for these dates?” Preserve both original exports. Avoid changing campaign settings while investigating a reporting discrepancy; that adds a new variable without explaining the old one.

First, acknowledge the documentation distinction

As checked October 15, API general conversion totals include click- and view-attributed goals. The Pixel documentation describes Ads Manager Conversions as click-only, with views separate. Do not silently treat these as one universal definition.

Verify the selected metric and attribution controls in the actual account, save the settings with the export, and ask support to clarify any unresolved surface-specific mismatch. A UI label alone is insufficient evidence that a number has the same scope as an API field.

API defaults: 30-day click, one-day view, and ad-event time. Available windows: 7/14/30 days for clicks, 0/1 for views. Click attribution takes precedence. Verify external tools separately.

Build a report identity card

Create a compact record beside each export:

  • Source surface and endpoint, where relevant.
  • Account, campaign, and other included entities.
  • Metric name and its documented meaning.
  • Start and end boundaries, including timezone.
  • Reporting time basis.
  • Click and view attribution settings.
  • Filters, segments, aggregation, and currency.
  • Extraction timestamp and known freshness limits.

The insights reference distinguishes endpoint scope, aggregation, and segmentation. Check pagination and supported combinations rather than assuming that one returned page is a complete export.

Keep this identity card with automated jobs too. A scheduled report without saved parameters is hard to audit after a default changes.

Work through a boundary example

Imagine a hypothetical customer clicks an ad late Monday and purchases early Tuesday. One report groups the result with the ad interaction; another groups it with the purchase. Daily rows can disagree even when both reports recognize the same outcome.

Now imagine that “late Monday” is already Tuesday in the other system's timezone. You have two independent boundary differences. Changing the attribution window cannot fix the timezone mismatch.

Build a small synthetic worksheet outside production using labeled timestamps. Calculate which date each event belongs to under each proposed definition. The purpose is to test the report specification, not to create fake attributed conversions on the platform.

Then compare a stable historical interval using matched definitions. If the discrepancy shrinks, preserve the explanation instead of rewriting old reports without an audit trail.

Reconcile in layers

First compare business occurrences with your internal measurement-dispatch ledger. Missing dispatches indicate an implementation question. Duplicate identities indicate an event-contract question. Neither requires speculation about the advertising auction.

Next compare the documented report scopes. A campaign report and an account report may contain different entities. A filtered export may exclude paused campaigns or a product group that the finance team still expects to see.

Finally, inspect attribution differences. An order can be valid in the commerce system without meeting a platform's attribution conditions. Likewise, another channel may claim the same order under its own model. Adding channel-attributed revenue together is not automatically a valid business revenue total.

Use an exception log with four columns: observed difference, likely category, evidence needed, and owner. Mark unresolved cases explicitly. A small unexplained residual is better disclosed than “fixed” through arbitrary spreadsheet adjustments.

Allow for freshness without inventing certainty

OpenAI documents daily conversion processing; allow at least one day. Current periods may be incomplete; null is not zero. Check reporting guidance before interpreting a comparison.

Save successive snapshots rather than overwriting them. This shows whether a gap is changing over time and prevents an early number from becoming a permanent management claim.

Keep attribution separate from causality

OpenAI's measurement update discusses attribution alongside experimental measurement. Those answer different questions. Attribution assigns credit under rules; incrementality asks what happened because advertising ran.

Use reconciled reporting for consistent operational decisions. If the business needs a causal answer, design an appropriate experiment with qualified analytical support. A larger attributed total, by itself, does not establish incremental growth.

References

Good questions open new possibilities.
Put these ideas to work

Your next step.
Handled together.

Talk to our team about SEO, AI discovery and ChatGPT advertising, or get early access to the workspace behind our work.

Where we can help
  • Technical SEO and content
  • AI discovery on ChatGPT, Perplexity and Gemini
  • ChatGPT ads, when they fit