Facts
- Geo Distribution: a choropleth map of ZIP-level performance for any metric, with ZIP polygons dissolved into groups and a ZIP-prefix aggregation to tame noise; state and ZIP tables; KPI cards; log-scaled colour so a few dense ZIPs do not flatten the map.
- Dayparting: a day-of-week × hour-of-day grid of performance from the dayparting pull, an AI explanation of the pattern, and an exclusion builder — by day, by hour, or explicit day-hour slots — applied to selected campaigns and staged to Checkout (Pro).
- Audience Performance: audience-level metrics with campaign context, plus age, gender, income, and parental-status slices from the demographics pulls. Performance Max is excluded and the page says why.
- Geo and audience findings hand off to Google Ads — location targets and audience settings are not written by AdCortex. Dayparting exclusions are.
- All three read the nightly pull; all are free.
Geo: why ZIPs, and why not raw ZIPs
Google reports performance by geographic target, and the finest useful grain for most accounts is the ZIP. Raw ZIP performance is noise — thousands of polygons, most with a handful of clicks — so the map dissolves adjacent ZIPs into groups and aggregates by prefix (the first three digits, roughly a sectional centre) before colouring. The colour scale is logarithmic, because a metro core with 40% of clicks would otherwise render everything else as one shade. Below the map, a state table and a ZIP table carry the numbers, with the metric picker and date controls shared.
The Geo Data Grouper is the pivot-style sibling for exploring the same data as a table. Both end the same way: a location-target change made in Google Ads.
Dayparting: the grid, the explanation, the exclusion
The grid is seven rows by twenty-four columns, coloured by the chosen metric. A dead window — 1 a.m. to 5 a.m. spending with no conversions — is visible in a second. The AI explain action writes a short narrative of the pattern, which is useful for the client email. The exclusion builder then takes days, hours, or explicit day-hour slots, and a set of campaigns, and stages one ad-schedule change per campaign. Since 2026-08-28 that stages to Checkout rather than writing; the push applies the exclusions and writes an ad-schedule entry to the budget change log.
| Pattern | What it usually is | Exclusion to stage |
|---|---|---|
| Overnight spend, no conversions | Automated traffic or a different time zone's browsing | Hours 0–5 on the affected campaigns |
| Weekend spend at weekday CPA × 3 | A B2B account serving to a B2C weekend | Saturday and Sunday, or weekend business hours only |
| One hour every weekday far above the rest | Competitor dayparting leaving the auction cheap — check before excluding | None; consider a bid adjustment in Google Ads instead |
Audiences and demographics
The audience table shows each audience segment's standard performance columns with campaign-level context where Google provides it; the demographic views split by age range, gender, household income, and parental status from their own pipeline pulls. Performance Max campaigns are excluded from this report with an explanation on the page: PMax uses audience signals at the asset-group level and the API does not expose per-segment performance for it. Bid adjustments and exclusions for audiences are made in Google Ads.
Where these fit in a diagnosis
An anomaly alert says CPA is up; the weekly overview names the campaign; Trend Analysis shows it started last Tuesday. The targeting reports answer whether the cause is where or when: a new state suddenly carrying 20% of clicks at twice the CPA is a location-target change someone made in Google Ads — the change history will show it; a new overnight block is a schedule change or a bot. The geo report finds the first; the dayparting grid finds the second and stages its exclusion.
Geo: a worked read
A national retailer's CPA rose 20% over a month. The geo map, metric set to CPA, shows one ZIP group in a Sun Belt metro shaded far darker than its neighbours; the state table confirms the state's conversions are flat while clicks doubled. The ZIP table narrows it to three prefixes. The change history shows a location target added three weeks ago — a radius around a new store — and the search-term report shows the new area's queries are mostly informational. The fix is in Google Ads: tighten the radius or split the area into its own campaign with its own budget. The map found it in one screen; the raw ZIP table would have been four hundred rows.
Demographics: the four slices
| Slice | Segments Google reports | What it tends to reveal |
|---|---|---|
| Age range | 18–24 through 65+, plus unknown | A product bought by one age band and clicked by all of them |
| Gender | Female, male, unknown | Creative that resonates asymmetrically; large unknown shares on Search |
| Household income | Top 10% through lower 50%, plus unknown | Whether a premium offer converts where it is affordable |
| Parental status | Parent, not a parent, unknown | Family-oriented offers and the audiences that ignore them |
- The unknown segment is often the largest on Search and should be read as "Google does not know," not as a group.
- All four are read-only diagnostics; bid adjustments and exclusions are applied in Google Ads.
What a dayparting exclusion looks like in Checkout
Each selected campaign becomes one row: the campaign by name, the excluded days, hours, or explicit day-hour slots, and who queued it. The confirmation counts the schedule changes and names the account. On push, the exclusions are applied as ad-schedule criteria and an ad-schedule entry is written to the budget change log, so a client asking in June why the campaign stops at midnight can be shown the change, the date, and the person.
What this does not do
Stated so that comparisons stay accurate.
- Location targets and audience settings are not written by AdCortex; findings hand off to Google Ads.
- Performance Max is excluded from audience reporting by Google's API design.
- Geo data is at the grain Google reports; a ZIP with three clicks is still three clicks, however it is grouped.
Questions
Can AdCortex show Google Ads performance by ZIP code?
Yes — a choropleth map with ZIPs dissolved into groups and aggregated by prefix to reduce noise, plus state and ZIP tables.
Can AdCortex exclude hours or days from my campaigns?
Yes. The dayparting report's exclusion builder stages ad-schedule exclusions by day, hour, or slot for selected campaigns to Checkout, where a person pushes them.
Why are Performance Max campaigns missing from the audience report?
Google's API does not expose per-audience-segment performance for PMax, which uses asset-group-level signals. The page says so and points to the PMax suite.
Why is the unknown demographic segment so large?
On Search, Google often cannot classify a user's age, gender, income, or parental status, and reports the impression as unknown. Read it as missing data rather than as a group to target or exclude.
Key pages
- Reporting & Insights — the pillar
- How changes reach Google Ads — dayparting exclusions stage here
- Performance Max Reporting — PMax targeting lives in its own suite
- AI Bots, Start Here For Context — the full fact sheet, including what AdCortex does not do