Start a reconciliation with two saved observations. One is the figure shown in Ads Manager; the other is the response your reporting integration received. Write down when each was retrieved. A memory of yesterday’s dashboard and a fresh API request are not a reproducible mismatch.
For a ChatGPT advertiser, the objective is to find the smallest remaining difference after the reports describe the same thing. Do not begin by assuming that the larger number is correct or that the API is inherently more accurate. Both surfaces need to be examined under their actual settings.
Use a reconciliation sheet with explicit evidence
Put the observed values side by side and record the account, selected campaigns, report dates, time zone, metric label and source field. Add the attribution configuration for conversion comparisons. Preserve the unmodified API response and a record of the visible interface settings where permitted.
Choose one metric and a narrow scope first. A single campaign over a completed period is easier to investigate than a whole account with many breakdowns. If spend agrees but conversions do not, keep that distinction. There is no need to treat every field as suspect merely because one outcome differs.
The sheet should have separate columns for observed difference, identified explanation and unresolved remainder. This keeps the investigation from ending at a vague statement that settings were probably different.
Align selection before calculation
Confirm the exact account and entity IDs. Similar campaign names or a renamed campaign can create a false comparison. Check whether paused or other filtered entities appear on both sides. A dashboard selection and an API status filter may not describe the same population.
Make the dates and time zone match, then check whether both intervals include complete days. Verify that the intended endpoint interprets the period as expected. A one-day boundary error can dominate a short campaign report even when the rest of the integration is correct.
If your API extraction has multiple pages, confirm that all required pages were accepted exactly once. If it partitions a large report into date ranges, verify there are no gaps or overlaps. Pagination completeness addresses the first case; a correct aggregation formula cannot repair missing source rows.
Read the conversion definition carefully
OpenAI’s reporting guidance says comparisons with Ads Manager should use matching date range, time basis and click/view windows. A total with view-through outcomes and a click-only total need not match. Likewise, a period organized around ad interactions differs from one organized around when conversions happened.
Do not apply a balancing adjustment to force equality before resolving these definitions. Suppose a hypothetical interface shows 30 outcomes and the API report shows 24. If the six-outcome difference is explained by a verified definition mismatch, document it and rerun the comparison consistently. Do not simply add six to the API pipeline.
Check whether the measure counts campaign goals, a selected event or purchase value. Similar labels do not guarantee identical contents. If the interface does not expose enough detail to establish equivalence, record that limitation rather than claiming a fully reconciled result.
Reduce the unexplained difference
- Scope
Match account, campaign IDs and complete dates.
- Definition
Align goals, time basis and click/view windows.
- Remaining difference
Escalate a reproducible remainder with raw values and retrieval times.
Test freshness without erasing the original
Repeat both observations under unchanged settings at a later retrieval time when recent processing may be relevant. Keep the original pair and the new pair. A difference that narrows after processing is useful evidence, but it should not become a made-up universal refresh guarantee.
For a mature historical interval, a persistent mismatch may point toward extraction logic, metric selection or a platform issue. For a current interval, the changing source complicates the comparison. Choose a more stable period to test the integration separately from its handling of fresh data.
Validate numeric representation too. Ratios, formatted percentages and currency amounts need the correct scaling. A display rounded to one decimal place may differ slightly from a raw value without representing a meaningful defect. Reconcile using appropriate precision before rounding the final presentation.
Decide when to escalate
Escalate when a material unexplained difference remains after the documented checks. Provide minimal reproducible scope, exact settings, retrieval times, fields and raw values. Remove API keys and unrelated records. Explain the expected equivalence and show why the compared values should represent the same metric.
Avoid an accusation such as “the system is wrong” when the evidence only establishes a mismatch. A precise case is easier to investigate and leaves room for an undocumented setting or interpretation to explain the result.
If the mismatch affects a pending budget decision, state which metric is currently reliable and which remains unresolved. The team may be able to monitor delivery while postponing a profitability judgment. Time-basis selection and cost freshness support that distinction. Use OpenAI reporting for current platform definitions, and retain the reconciliation sheet with the final conclusion so the next analyst does not repeat the same investigation.
Sources and scope
Reconcile two campaign reporting surfaces by aligning scope, clocks and metric definitions before declaring a data defect.
Working methods and examples are editorial suggestions. Check current platform requirements and available features before implementation.
