{"id":1261,"date":"2026-10-12T11:54:15","date_gmt":"2026-10-12T15:54:15","guid":{"rendered":"https:\/\/thedoctorads.com\/blog\/google-ads-audience-targeting-audit"},"modified":"2026-10-12T11:54:15","modified_gmt":"2026-10-12T15:54:15","slug":"google-ads-audience-targeting-audit","status":"publish","type":"post","link":"https:\/\/thedoctorads.com\/blog\/google-ads-audience-targeting-audit","title":{"rendered":"The Empty List Majority: 66.7% of Google Ads Audience Lists Show Zero"},"content":{"rendered":"<div class=\"tldr\">\n<p><strong>TL;DR abstract.<\/strong> Every audience list in your Google Ads account feels like an asset: a named group of people you can show ads to, exclude or watch. In the median account we examined, <strong><span data-claim-id=\"HUB-C06-01\">66.7%<\/span><\/strong> of all exported lists showed a size of zero on both Search and Display. We call it <strong>The Empty List Majority<\/strong>. A zero is Google&#8217;s count of recently active members, not proof that a list is broken. Still, a list Google cannot count is a label, not an audience.<\/p>\n<p>To audit audience targeting, work in order. Read each audience&#8217;s mode first: Targeting restricts who can see an ad, while Observation only reports on people who see it anyway. Then check the size of every list your campaigns use, and learn what your Observation report is made of. In a separate set of Search audit exports, Google&#8217;s broad affinity segments held <span data-claim-id=\"HUB-C01-18\">about two thirds<\/span> of the observed cost in the median account, in-market segments came next, and customer lists held <span data-claim-id=\"HUB-C01-12\">about 0.02%<\/span>. Demographics, geography, hours and devices come last.<\/p>\n<p>The lists come from a snapshot of the Doctor Ads managed portfolio, the Observation figures from earlier audit exports. Neither shows wasted spend or broken delivery. Both show where an audit should start: with what your lists and reports contain, before anyone changes who can see your ads.<\/p>\n<\/div>\n<aside class=\"key-stat\">\n<p><strong>The Empty List Majority: in the median account, <span data-claim-id=\"HUB-C06-01\">66.7%<\/span> of every exported audience list showed zero size on both Search and Display. Remove any single account and the median stays at <span data-claim-id=\"HUB-C06-03\">66.7%<\/span>.<\/strong><\/p>\n<p class=\"source-line\">Source: Doctor Ads Profit Forensics, a 10 July 2026 snapshot of the managed portfolio, with one account refreshed in September 2026. Reported sizes, not a diagnosis of any single list.<\/p>\n<\/aside>\n<p>The closest published example we found covers one account. In <a href=\"https:\/\/www.searchenginejournal.com\/targeting-observation-ppc\/430438\/\" target=\"_blank\" rel=\"noopener\">Search Engine Journal<\/a> on 30 July 2025, Brooke Osmundson described a brand Search campaign whose customer lists had moved from Targeting to Observation. Three months later, 89% of its conversions came from people outside those lists. That is one client and one campaign. This hub asks a related question across a managed portfolio: how much work do your lists actually do?<\/p>\n<h2>Observation watches, Targeting fences: read the mode first<\/h2>\n<p><strong>Before you judge any audience, find out what it is allowed to do.<\/strong> In a Search campaign, an audience set to Targeting is a fence: only people in the segment can see the ad, within the campaign&#8217;s other settings. An audience set to Observation is a label: everyone eligible can still see the ad, and the report tags the people who happen to be in the segment. Google&#8217;s <a data-claim-id=\"HUB-GDOC-01\" href=\"https:\/\/support.google.com\/google-ads\/answer\/7365594?hl=en\" target=\"_blank\" rel=\"noopener\">Targeting and Observation documentation<\/a> draws exactly that line.<\/p>\n<p>Most confusion in an audience audit starts here. A segment called &#8220;past buyers&#8221; sounds like a boundary even when it is only a label on a report. Ask whoever runs the account to describe the intended buyer in one sentence, then compare that sentence with the setting.<\/p>\n<p>Write down exclusions as well. A list used to keep existing customers out does a different job from the same list used to watch them, and its name will not tell you which. Smart Bidding adds a third job: the same Google page says first-party segments added in Observation are used as signals for bidding.<\/p>\n<p>Performance Max reads audiences differently. Google describes <a data-claim-id=\"HUB-GDOC-07\" href=\"https:\/\/support.google.com\/google-ads\/answer\/14530785?hl=en\" target=\"_blank\" rel=\"noopener\">audience signals as suggestions<\/a>, and relevant users outside them can still see ads. The Search figures on this page do not audit Performance Max delivery, so check the campaign type before deciding what an audience field promises.<\/p>\n<p>The output of this step is one word per audience: fence, exclusion, signal or label. If the team cannot say which, no performance chart will settle it. <strong>Observation watches. Targeting fences.<\/strong><\/p>\n<h2>The Empty List Majority: two lists in three show zero<\/h2>\n<p><strong>Now open the lists themselves.<\/strong> In the median account, <strong><span data-claim-id=\"HUB-C06-01\">66.7%<\/span><\/strong> of every exported audience list showed a size of zero on both Search and Display. Counting all the accounts&#8217; lists together, the share was <strong><span data-claim-id=\"HUB-C06-01\">73.9%<\/span><\/strong>. A library can look long and busy while, in the typical account, Google counts no one in two lists out of three.<\/p>\n<p>That is The Empty List Majority. There is an old line for it: the map is not the territory. Your list library is the map, and the size columns are the territory.<\/p>\n<p>Why should an owner care about a column of zeros? Because of what lists are for. <strong>A zero list used as a fence lets no one through. Used as an exclusion, it keeps no one out. A reported zero alone does not show whether the list gives Smart Bidding a useful signal.<\/strong><\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/10\/tda-w13-hub-list-zero-sizes.png\" alt=\"Share of exported audience lists with zero reported size on both Search and Display: median account 66.7%, all exported lists pooled 73.9%. Without the largest spending account the median stays at 66.7%; without the account holding the most lists the pool is 69.4%.\" title=\"\"><figcaption><strong>The Empty List Majority.<\/strong> In the median account, two lists in three show zero size on both networks. Source: Doctor Ads Profit Forensics, a 10 July 2026 snapshot of the managed portfolio, with one account refreshed in September 2026.<\/figcaption><\/figure>\n<h3>What a zero actually means<\/h3>\n<p><strong>A zero is Google&#8217;s count, not a verdict on the list.<\/strong> Google sizes a list separately for each network. Search size, for example, is based on members who searched on Google in the previous 30 days, according to Google&#8217;s <a href=\"https:\/\/support.google.com\/google-ads\/answer\/7068417\" target=\"_blank\" rel=\"noopener\">Search help on data segments<\/a>. So a list can hold people and still show zero on Search.<\/p>\n<p>The count matters because Google uses it as a gate. A list needs at least 100 active users in the last 30 days to serve on Search, Display or YouTube, according to Google&#8217;s <a data-claim-id=\"HUB-GDOC-04\" href=\"https:\/\/support.google.com\/google-ads\/answer\/2472738?hl=en\" target=\"_blank\" rel=\"noopener\">explanation of data segments<\/a>. Google cut the Search minimum from 1,000 to 100 in December 2025, as <a href=\"https:\/\/www.seroundtable.com\/google-ads-lowers-customer-lists-40648.html\" target=\"_blank\" rel=\"noopener\">Search Engine Roundtable<\/a> reported. One exception catches older accounts: a customer list not uploaded or refreshed since 1 February 2024 still has to meet the old 1,000-user minimum.<\/p>\n<p>Put the two together. A list showing zero on both networks was, on the day of the snapshot, below Google&#8217;s minimum on both. Whether that costs you anything turns on one question our data cannot answer and you can: does any campaign rely on that list?<\/p>\n<p>Our export cannot say why a list shows zero. It leaves the list type blank and records no status, so it cannot separate customer lists from website lists, or a list with a broken source from a list nobody uses.<\/p>\n<h3>The two thirds is not one account&#8217;s quirk<\/h3>\n<p><strong>Remove any single account and the median stays at <span data-claim-id=\"HUB-C06-03\">66.7%<\/span>.<\/strong> The pooled share sits higher because the pool counts every list once, so big libraries weigh more. The biggest library holds <span data-claim-id=\"HUB-C06-07\">about one list in six<\/span> in the whole snapshot, and <span data-claim-id=\"HUB-C06-07\">96.8%<\/span> of its own lists show zero. Take that account out and the pool is still about seven in ten: <strong><span data-claim-id=\"HUB-C06-06\">69.4%<\/span><\/strong>.<\/p>\n<p>The median gives every account one vote and describes the typical account; the pool gives every list one vote and describes the inventory. Both point the same way: in these accounts, zero is the common state of a list, not the exception.<\/p>\n<h3>What to do with a zero<\/h3>\n<p><strong>Start from the campaigns, not the library.<\/strong> For each important campaign, write down the audiences it uses as a fence, an exclusion, a signal or a label. Then open each one in <a data-claim-id=\"HUB-GDOC-05\" href=\"https:\/\/support.google.com\/google-ads\/answer\/7558048?hl=en\" target=\"_blank\" rel=\"noopener\">Audience Manager<\/a> and read its source, definition, status and size on each network.<\/p>\n<p>Anything under 100 on a network is below Google&#8217;s minimum there. For a list that matters, check whether the intended people can enter it and whether the right account receives it. Refresh an old customer upload. A new list may only need time to fill, while a list built on the wrong condition needs rebuilding.<\/p>\n<p>Leave the rest of the library alone until you know what depends on it. Deleting every zero can remove a list someone still expects to use. The goal is not a tidy library; it is knowing which lists are doing work.<\/p>\n<h2>What the Observation report is made of: mostly affinity<\/h2>\n<p><strong>Next, read the Observation report for what it is.<\/strong> Its rows look like a picture of who your budget reached: one segment per line, cost beside it. We measured a separate, smaller set of Search audit exports, dated September or October 2024 to January 2025. In the median account, <strong><span data-claim-id=\"HUB-C01-18\">about two thirds<\/span><\/strong> of the cost on campaign-level Observation rows sat in affinity segments, the broad interest groups Google defines, not lists you build. Pooled across all the exports the share reaches <span data-claim-id=\"HUB-C01-06\">about four fifths<\/span>, because one account carried <span data-claim-id=\"HUB-C01-20\">about half of all observed cost<\/span> and was almost entirely affinity.<\/p>\n<p>In-market segments, groups Google identifies as actively researching a purchase, carried <span data-claim-id=\"HUB-C01-07\">about a tenth<\/span>. Website-visitor lists, your remarketing, carried <span data-claim-id=\"HUB-C01-10\">under 1%<\/span>. Customer lists carried <strong><span data-claim-id=\"HUB-C01-12\">about 0.02%<\/span><\/strong>.<\/p>\n<p>The segments built from your own customers were almost absent from the report built to show you audiences. If you judge your customer lists by this report, you are judging them on almost no money.<\/p>\n<h3>Why the account figure and the campaign figure differ<\/h3>\n<p><strong>How much of a campaign&#8217;s cost the rows represent depends on how you count.<\/strong> For the median campaign, observed rows added up to <span data-claim-id=\"HUB-C01-13\">about 4%<\/span> of its cost. For the median account, they added up to <strong><span data-claim-id=\"HUB-C01-01\">about 40%<\/span><\/strong>. Both numbers are right, and the difference is the lesson.<\/p>\n<p>Most campaigns carry little observed cost: <span data-claim-id=\"HUB-C01-14\">nearly six in ten<\/span> had less than 5% of their cost in observed rows. A minority carries a lot: <span data-claim-id=\"HUB-C01-15\">a quarter of the campaigns, holding about half of the matched spend<\/span>, had 30% or more. The account figure weights campaigns by spend, so those large, heavily observed campaigns set it. Affinity stays the majority of observed cost in the median account and whichever single account is left out, so most of what those campaigns observe is affinity.<\/p>\n<p>So never apply the account figure to a single campaign. Account ratios ran from <span data-claim-id=\"HUB-C01-16\">about 2% to about two thirds<\/span>, so there is no normal level to aim for. A high share is not a score, and a low one does not mean anything is missing.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/10\/tda-w13-hub-observation-cost-ratio.png\" alt=\"Top panel: pooled Observation-row cost by segment type: affinity 82.5%, in-market 9.9%, combined 3.8%, detailed demographics 2.6%, website visitors 0.7%, custom combination 0.5%, customer lists about 0.02%; in the median account affinity is 68.2%. Bottom panel: Observation-row cost divided by matching Search campaign cost: median account 0.397, about 40%; pooled 0.330; without the largest spending account, median 0.379 and pool 0.227. Cost shares, not counts of people.\" title=\"\"><figcaption><strong>Most observed cost is affinity, and observed rows equal about 40% of campaign cost in the median account.<\/strong> Top: observed cost by segment type, pooled; about two thirds is affinity in the median account. Bottom: observed cost against matching campaign cost; about 4% in the median campaign. Source: Doctor Ads Profit Forensics, dated Search audit exports.<\/figcaption><\/figure>\n<h3>The rows never add up to more than the bill<\/h3>\n<p><strong>In <span data-claim-id=\"HUB-C01-17\">no campaign<\/span> did the observed rows sum past the campaign&#8217;s own cost.<\/strong> That is what you would expect if each paid click is credited to a single segment. Google documents a one-segment rule for your data segments: when a Search user belongs to more than one, &#8220;the segment with highest bid adjustment receives the impression attribution,&#8221; in the words of its <a href=\"https:\/\/support.google.com\/google-ads\/answer\/7068417\" target=\"_blank\" rel=\"noopener\">Search help on data segments<\/a>.<\/p>\n<p>Google states that rule for data segments, meaning your website-visitor and customer lists. We did not find it stated for affinity or in-market rows, so the fit is consistent, not proven. Either way, the rows describe labelled traffic, not unique people: one person can belong to several segments, as Google&#8217;s <a data-claim-id=\"HUB-GDOC-03\" href=\"https:\/\/support.google.com\/google-ads\/answer\/4782789?hl=en\" target=\"_blank\" rel=\"noopener\">Search audience and automated-bidding documentation<\/a> notes.<\/p>\n<h3>How to read the report instead<\/h3>\n<p><strong>Treat the Observation report as a sample of labelled traffic, not a map of your budget.<\/strong> Before comparing rows, match their campaigns, reporting level and dates to the campaign totals. Google&#8217;s <a data-claim-id=\"HUB-GDOC-02\" href=\"https:\/\/support.google.com\/google-ads\/answer\/10566573?hl=en\" target=\"_blank\" rel=\"noopener\">audience reporting page<\/a> offers account, campaign and ad-group views, and adding an ad-group view to a campaign view of the same activity can count the same cost twice.<\/p>\n<p>Then resist two tempting moves. Do not add the rows up to measure how much of your spend &#8220;the audiences&#8221; explain. And do not move an attractive row from Observation to Targeting expecting to buy more of those people: in Search, Targeting adds no one; it removes everyone outside the segment.<\/p>\n<p>A segment row that converts cheaply is a hypothesis for a test, not proof that you should reach more people like it.<\/p>\n<h2>Demographics: almost three dollars in ten have no known age<\/h2>\n<p><strong>Before you exclude anyone by age, look at the row nobody can label.<\/strong> In our published age study, Unknown took a median <strong><span data-claim-id=\"HUB-AGE-01\">28.8%<\/span><\/strong> of account spend. Excluding it is not trimming a corner. It is a decision about almost three dollars in ten, and the <a data-claim-id=\"HUB-AGE-01\" href=\"https:\/\/thedoctorads.com\/blog\/google-ads-age-targeting-unknown-age\">analysis of Google Ads age targeting and Unknown age<\/a> shows what that decision trades away.<\/p>\n<p>Google&#8217;s <a data-claim-id=\"HUB-GDOC-08\" href=\"https:\/\/support.google.com\/google-ads\/answer\/2580383?hl=en\" target=\"_blank\" rel=\"noopener\">demographic targeting documentation<\/a> defines Unknown as people whose attributes it has not identified. That label says nothing about whether a person can buy. Compare the Unknown row with the known ages on the same outcome, and if your conversion is an enquiry, check how many enquiries become customers first.<\/p>\n<p>Check the important campaigns one at a time as well. A group that looks expensive at account level may simply receive a different mix of campaigns, products and goals.<\/p>\n<h3>Gender barely moved the cost of a conversion<\/h3>\n<p>The other common reflex is gender. Our <a data-claim-id=\"HUB-GENDER-01\" href=\"https:\/\/thedoctorads.com\/blog\/google-ads-gender-income-targeting\">gender and household-income study<\/a> found a median women-to-men conversion-cost ratio of <strong><span data-claim-id=\"HUB-GENDER-01\">0.99<\/span><\/strong> inside the same account. That is close to parity. A persona that says &#8220;our buyer is a woman&#8221; is not, on its own, a reason to bid differently.<\/p>\n<p>A product with a narrow buyer may still show a real gap, so read your own ratio. Then check what your bidding can use. Google&#8217;s <a data-claim-id=\"HUB-GDOC-06\" href=\"https:\/\/support.google.com\/google-ads\/answer\/2732132?hl=en\" target=\"_blank\" rel=\"noopener\">bid-adjustment documentation<\/a> says ordinary manual demographic adjustments are not supported by Smart Bidding. If you bid manually, a modifier is an available test; under Smart Bidding, an exclusion narrows reach, so run it as an experiment before you keep it.<\/p>\n<h2>Geography: the setting and the report answer different questions<\/h2>\n<p><strong>Read geography twice: once as the instruction you gave, once as the record of where the money went.<\/strong> Our location study found a median <strong><span data-claim-id=\"HUB-GEO-01\">2.55%<\/span><\/strong> of classified geographic spend in rows labelled area of interest. In the typical account that is a thin slice, and the <a data-claim-id=\"HUB-GEO-01\" href=\"https:\/\/thedoctorads.com\/blog\/google-ads-location-presence-vs-interest\">presence-versus-interest analysis<\/a> explains why those rows cannot reveal the campaign&#8217;s setting on their own.<\/p>\n<p>The label is Google&#8217;s inference about location or interest, not confirmation of where a person stood. So inspect the campaign&#8217;s <a data-claim-id=\"HUB-GDOC-09\" href=\"https:\/\/support.google.com\/google-ads\/answer\/1722038?hl=en\" target=\"_blank\" rel=\"noopener\">advanced location options<\/a> separately, then ask the business question: can people interested in your location become customers? If customers travel to you, researching the destination from elsewhere may be part of buying. If you can only serve people already nearby, that is a different constraint.<\/p>\n<p>Compare the price and the eventual business outcome of those rows before you change the rule. A cheaper click is not necessarily a cheaper customer, and a dearer one is not necessarily waste. This is the audit&#8217;s lesson in a third form: the setting is the instruction, and the report is what happened after it.<\/p>\n<h2>Hours and devices: check the clock and the phone<\/h2>\n<p><strong>Finish with when the campaign may run and where its money lands.<\/strong> These two checks connect targeting to what people experience after the click.<\/p>\n<h3>A schedule can exist without narrowing the week<\/h3>\n<p>Our scheduling study found that <strong><span data-claim-id=\"HUB-TIME-01\">16.3%<\/span><\/strong> of campaigns spending in the first half of 2026 carried restrictive hours at the later snapshot. Most spending campaigns, in other words, could run at any hour. The <a data-claim-id=\"HUB-TIME-01\" href=\"https:\/\/thedoctorads.com\/blog\/google-ads-ad-schedule-adoption\">audit of ad-schedule adoption<\/a> separates having schedule rows from actually leaving hours uncovered.<\/p>\n<p>Look at the hours the rows cover, not at whether a schedule exists. An empty schedule and a full-week schedule reach the same hours, even though they look different in an inventory. Then compare eligibility with your ability to respond: if enquiries wait unanswered overnight, check what happens to them before blaming the hour of the click.<\/p>\n<p>Smart Bidding still respects an ad schedule, though routine hourly bid modifiers are not supported, according to the bid-adjustment documentation linked above. So restricting hours removes auctions outright; it does not ask the bidding to value an hour differently.<\/p>\n<h3>Mobile takes most of the money, so test the phone<\/h3>\n<p>Our device study found that the median account put <strong><span data-claim-id=\"HUB-DEVICE-01\">78.9%<\/span><\/strong> of its spend on mobile in the first half of 2026. The <a data-claim-id=\"HUB-DEVICE-01\" href=\"https:\/\/thedoctorads.com\/blog\/google-ads-mobile-share-of-spend\">analysis of mobile share of Google Ads spend<\/a> gives the context for reading your own device mix. It is a share of spend, not a count of mobile customers or a recommended split.<\/p>\n<p>Open your landing page on a phone and complete the important action yourself: the form, the payment or the enquiry. That test can reveal a problem worth fixing with no audience change at all. Device controls depend on the strategy and campaign type. Google&#8217;s support table lists exceptions, including device target adjustments for Target CPA and some device exclusions, so verify the control before proposing a blanket device bid cut.<\/p>\n<h2>The audit on one page, with each check&#8217;s own denominator<\/h2>\n<p><strong>The numbers below are signposts, not a combined score.<\/strong> Each answers a different question, and list counts, cost shares, ratios and settings cannot be added into one picture of an audience.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/10\/tda-w13-hub-audit-map.png\" alt=\"Audit sequence: read Targeting or Observation mode; check lists with zero size on both networks, 66.7% of all exported lists in the median account; compare Observation-row cost with matching Search campaign cost, a median account ratio of 0.397; check Unknown-age spend, median 28.8%, and the women-to-men conversion-cost ratio, median 0.99; inspect interest-location spend, median 2.55%; inspect restrictive schedules, 16.3% of spending campaigns, and mobile spend, median 78.9%. Samples and denominators differ.\" title=\"\"><figcaption><strong>Read scope before changing reach.<\/strong> The two new findings plus figures from the five published companion studies. Their samples and reporting windows differ. Source: Doctor Ads Profit Forensics.<\/figcaption><\/figure>\n<table>\n<thead>\n<tr>\n<th>Check<\/th>\n<th>What was measured<\/th>\n<th>Result<\/th>\n<th>Decision it informs<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Mode<\/td>\n<td>Search audience setting<\/td>\n<td>Read Targeting or Observation<\/td>\n<td>Is this audience a fence or a label?<\/td>\n<\/tr>\n<tr>\n<td>List sizes<\/td>\n<td>Lists with zero size on both networks<\/td>\n<td><span data-claim-id=\"HUB-C06-01\">66.7%<\/span> of all exported lists, median account<\/td>\n<td>Which of the lists my campaigns use sit under 100 on a network?<\/td>\n<\/tr>\n<tr>\n<td>Report contents<\/td>\n<td>Observation-row cost \/ matching Search campaign cost<\/td>\n<td><span data-claim-id=\"HUB-C01-01\">About 40%<\/span> in the median account; <span data-claim-id=\"HUB-C01-18\">about two thirds<\/span> of observed cost is affinity in the median account<\/td>\n<td>Mostly Google&#8217;s interest categories: read it as labelled traffic, not a budget map<\/td>\n<\/tr>\n<tr>\n<td>Age<\/td>\n<td>Unknown-age share of spend<\/td>\n<td><span data-claim-id=\"HUB-AGE-01\">28.8%<\/span> median account<\/td>\n<td>How much reach would an exclusion put at stake?<\/td>\n<\/tr>\n<tr>\n<td>Gender<\/td>\n<td>Women \/ men conversion cost within account<\/td>\n<td><span data-claim-id=\"HUB-GENDER-01\">0.99<\/span> median ratio<\/td>\n<td>Does a demographic test have a useful premise?<\/td>\n<\/tr>\n<tr>\n<td>Geography<\/td>\n<td>Interest share of classified geographic spend<\/td>\n<td><span data-claim-id=\"HUB-GEO-01\">2.55%<\/span> median account<\/td>\n<td>Can those users become your customers?<\/td>\n<\/tr>\n<tr>\n<td>Hours<\/td>\n<td>Spending campaigns with restrictive schedules<\/td>\n<td><span data-claim-id=\"HUB-TIME-01\">16.3%<\/span> of campaigns<\/td>\n<td>Were the eligible hours chosen on purpose?<\/td>\n<\/tr>\n<tr>\n<td>Devices<\/td>\n<td>Mobile share of all-device spend<\/td>\n<td><span data-claim-id=\"HUB-DEVICE-01\">78.9%<\/span> median account<\/td>\n<td>Does the buying experience suit where the money goes?<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>When this does not apply<\/h2>\n<p><strong>You need a Performance Max reach diagnosis.<\/strong> Its audience signals do a different job from Search Observation rows, so use the campaign&#8217;s own diagnostics; the Search figures here cannot show its delivery.<\/p>\n<p><strong>Your important lists were just created or changed.<\/strong> A new list needs time to fill, and a snapshot zero may already be out of date. Read the current size and status before treating a zero as persistent.<\/p>\n<p><strong>Your customer list is old.<\/strong> A customer list not uploaded or refreshed since 1 February 2024 is still held to the old 1,000-user minimum. It can sit well above zero and still be too small to serve, so judge it against that bar, not against 100.<\/p>\n<p><strong>You sell to a deliberately narrow buyer group.<\/strong> A justified boundary can matter more than any portfolio comparison. Check that the campaign reaches people you can actually serve before applying a broad-audience lesson.<\/p>\n<p><strong>Your conversion is an early step, not a sale.<\/strong> Demographic or geographic rows can look efficient while producing different rates of real customers. Use the downstream result when you design a test; nothing here promises an improvement in your account.<\/p>\n<p><strong>Your report periods do not match.<\/strong> A historical cost report and today&#8217;s list sizes cannot be joined into a cause. Align the windows, check the settings history where you can, and leave the question open if the export cannot support it.<\/p>\n<h2>What to check in your account<\/h2>\n<ol>\n<li><strong>Write the intended rule for each audience.<\/strong> For every important campaign, record the campaign type, each audience&#8217;s mode and the exclusions. Mark each audience as a fence, an exclusion, a signal or a label.<\/li>\n<li><strong>Read the size of every list those campaigns use.<\/strong> Record source, definition, status and size on each network. Anything under 100 on a network is below Google&#8217;s minimum there; investigate it before you remove it or change the campaign.<\/li>\n<li><strong>Sort the Observation report by segment type.<\/strong> Note how much of the observed cost is affinity and how much is your own lists. Match campaigns, level and dates to the campaign totals, and never read the rows as a share of people reached.<\/li>\n<li><strong>Compare demographics on outcomes that pay.<\/strong> Keep Unknown in the analysis, check that account patterns hold in the important campaigns, and confirm what your bidding strategy supports.<\/li>\n<li><strong>Treat geography as a business constraint.<\/strong> Read the setting apart from the location-type rows, and decide whether interested users outside your area can become customers.<\/li>\n<li><strong>Check eligible hours and the phone experience.<\/strong> Look at real schedule coverage and complete the mobile buying journey yourself. Plan a test only once you have found a problem these controls can fix.<\/li>\n<\/ol>\n<p>Close the audit with a short decision note: what the account was meant to do, what the records show, what remains unknown and which observation would change the decision. Give any proposed test a business measure. An audit can reasonably end with a better explanation of an existing setting.<\/p>\n<p><!-- cta-anchor --><\/p>\n<h2>Researcher&#8217;s take<\/h2>\n<p>I would start every audience audit in the list library, not in the performance report. The Empty List Majority is not a scandal by itself; some lists are built for a campaign that ended and simply stay behind. What worries me is the one list a campaign depends on, as a fence, an exclusion or a signal, sitting at zero while everyone assumes it works. So my verdict is simple. Before anyone changes who can see your ads, ask for the size of every list your campaigns use, network by network. If nobody can answer, that is your first finding.<\/p>\n<p><em>Igor Ivitskiy, Doctor Ads Profit Forensics<\/em><\/p>\n<h2>FAQ<\/h2>\n<h3>How should I audit Google Ads audience targeting?<\/h3>\n<p>Work in order: mode, list sizes, what the Observation report is made of, then demographics, geography, hours and devices. Start with the lists, because in the median account <strong><span data-claim-id=\"HUB-C06-01\">66.7%<\/span><\/strong> of all exported lists showed zero size on both Search and Display. Know which lists your campaigns rely on before you act on any performance row.<\/p>\n<h3>Does a zero audience size mean my list is broken?<\/h3>\n<p>Not by itself. Search size counts only members who searched on Google in the previous 30 days, so a list can hold people and still show zero. But a list needs at least 100 active users on a network to serve there, so a zero on a list a campaign relies on deserves a look at its source, definition and status.<\/p>\n<h3>Can I add up Observation rows to see how much of my spend audiences explain?<\/h3>\n<p>As reported cost, yes; as a count of people, no. In our Search exports the rows came to <span data-claim-id=\"HUB-C01-01\">about 40%<\/span> of matching campaign cost in the median account but <span data-claim-id=\"HUB-C01-13\">about 4%<\/span> in the median campaign, and affinity segments made up <span data-claim-id=\"HUB-C01-18\">about two thirds<\/span> of the observed cost in the median account. The rows never summed past a campaign&#8217;s cost, yet one person can sit in several segments, so they describe labelled traffic, not unique people.<\/p>\n<h3>Should I exclude Unknown age or restrict advertising hours?<\/h3>\n<p>Not on these numbers alone. Our companion studies found Unknown-age spend at a median <strong><span data-claim-id=\"HUB-AGE-01\">28.8%<\/span><\/strong>, and restrictive schedules on <strong><span data-claim-id=\"HUB-TIME-01\">16.3%<\/span><\/strong> of spending campaigns at a later snapshot. Neither shows that changing the setting improves results. Establish a business reason, then test a control your bidding strategy supports.<\/p>\n<h2>Method<\/h2>\n<p>Doctor Ads Profit Forensics recalculated both new findings from two separate sources. The list inventory uses a 10 July 2026 snapshot of the managed portfolio, with one account refreshed in September 2026. No account appears in both files, so the refreshed account is counted once, and reference spend stops at June 2026. The snapshot holds <span data-claim-id=\"HUB-C06-M01\">5,531 exported lists (accounts: n=125), of which 4,086 show zero size on both Search and Display<\/span>.<\/p>\n<p>Both size fields are complete. List type is blank in every row and status is not recorded, so zeros cannot be split by type or explained. Every exported list counts, including unused ones. The account median is <span data-claim-id=\"HUB-C06-01\">66.7%<\/span> and the pooled share <span data-claim-id=\"HUB-C06-01\">73.9%<\/span>. Leaving out each account in turn never moves the median, and the pooled share stays between <span data-claim-id=\"HUB-C06-03\">69.4% and 75.1%<\/span>.<\/p>\n<p>The account holding the most lists has <span data-claim-id=\"HUB-C06-07\">16.4% of all lists and 21.5% of the zero-size lists<\/span>; without it, the pool is <span data-claim-id=\"HUB-C06-06\">69.4% (3,206 of 4,622 lists)<\/span>. The median also stays at <span data-claim-id=\"HUB-C06-02\">66.7%<\/span> without the largest spender, chosen on spend from January 2023 to June 2026, and with one account per recorded family of related accounts (<span data-claim-id=\"HUB-C06-04\">n=112<\/span>).<\/p>\n<p>The Observation analysis uses Search audit exports instead: each account&#8217;s latest dated audience-report window, starting 1 September or 16 October 2024 and ending between 15 and 31 January 2025 (<span data-claim-id=\"HUB-C01-M01\">accounts: n=8; 880 Search campaigns with positive cost<\/span>). With fewer than ten accounts, it is exploratory. Only campaign-level Observation rows count; 93 campaigns with ad-group-level rows or whole-history windows and 178 ambiguous campaign names are excluded before matching by name within account and window. Paused and removed campaigns keep their spend, and costs are converted to USD at a fixed rate per currency.<\/p>\n<p>Summed Observation-row cost is divided by matching campaign cost inside each account. The account median is <span data-claim-id=\"HUB-C01-01\">0.397<\/span>, about 40%, and the pooled ratio <span data-claim-id=\"HUB-C01-01\">0.330<\/span>, about a third. Leave-one-account-out medians run from <span data-claim-id=\"HUB-C01-03\">0.379 to 0.416<\/span>; without the largest spender, the median is <span data-claim-id=\"HUB-C01-02\">0.379<\/span> and the pool <span data-claim-id=\"HUB-C01-02\">0.227<\/span>. Account ratios range from <span data-claim-id=\"HUB-C01-16\">0.018 to 0.666<\/span>.<\/p>\n<p>The median campaign ratio is <span data-claim-id=\"HUB-C01-13\">0.036<\/span>: <span data-claim-id=\"HUB-C01-14\">517 of 880 campaigns sit below 0.05 and hold 35.3% of matched spend<\/span>, while <span data-claim-id=\"HUB-C01-15\">221 sit at 0.30 or above and hold 51.7%<\/span>. No campaign&#8217;s row sum exceeds its cost; the highest campaign ratio is <span data-claim-id=\"HUB-C01-05\">0.872<\/span>. Segment-type shares are weighted by cost across all observed rows, not medians of accounts: affinity <span data-claim-id=\"HUB-C01-06\">0.825<\/span>, in-market <span data-claim-id=\"HUB-C01-07\">0.099<\/span>, combined <span data-claim-id=\"HUB-C01-08\">0.038<\/span>, detailed demographics <span data-claim-id=\"HUB-C01-09\">0.026<\/span>, website visitors <span data-claim-id=\"HUB-C01-10\">0.007<\/span>, custom combination <span data-claim-id=\"HUB-C01-11\">0.005<\/span> and customer segments <span data-claim-id=\"HUB-C01-12\">0.0002<\/span>. Similar segments and installed-app categories carry no cost.<\/p>\n<p>Without membership overlaps, event identifiers or attribution history, the rows cannot be turned into unique people; no conversions are combined across accounts. The five companion figures come from the published articles, with their own populations and windows. This is an agency-managed and audited portfolio, not a random sample of advertisers. The two new analyses use different samples and dates, and neither establishes a cause, wasted spend, a defective list or a targeting breach. We will recompute both on the next audit exports and the next portfolio snapshot.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the median account, 66.7% of every exported audience list showed zero size on both Search and Display. How to audit Google Ads audience targeting, in order.<\/p>\n","protected":false},"author":0,"featured_media":1260,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-1261","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-audiences-and-targeting","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33"],"_links":{"self":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/comments?post=1261"}],"version-history":[{"count":0,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1261\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media\/1260"}],"wp:attachment":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media?parent=1261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/categories?post=1261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/tags?post=1261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}