Google Ads performance report (UI CSV/Excel download)
A per-campaign / per-ad-group / per-keyword performance table pulled from the Google Ads UI (Reports editor or any table's download button). People treat it as a clean grid of spend and conversions; it is a titled report with a preamble, a trailing total, and several columns that are not the numbers they look like.
The shape, how the file is really laid out
Downloads from the Reports editor open with metadata rows ABOVE the column
header: the report name, the account/customer name, and the reporting date
range (e.g. "Campaign report", "Jan 1, 2026 - Jan 31, 2026"). The real
header row is therefore not row 1. A "Total" row sits at the BOTTOM
(labelled like "Total: Campaign" or "Total --"), and segmented reports add
per-segment subtotal rows in the body. Cost is in the account's currency
already divided to whole units in the UI export (the API returns the same
field in micros, 1,000,000 = 1 unit, a mismatch if someone mixes sources).
Empty metrics render as "--", not 0. Rate columns carry "%" and impression-
share columns can hold the literal strings "< 10%" and "> 90%".
The traps
Header-not-on-row-1: a parser that assumes row 1 is the header ingests the report title and date-range banner as data.
- Every trap in this export, worked through
- The reconciliation anchor, the total the file asserts about itself
- The refusal cases, when to stop and ask instead of guess
Reference: Google Ads Help, download, schedule and format reports · Google Ads API, reporting metrics (cost in micros, conversions vs all_conversions, attribution)