YOUR GOOGLE SEARCH CAMPAIGN IS ELIGIBLE AND NEVER SERVES
Enabled. Eligible. Ad approved, keywords approved, billing approved, budget set. Three weeks later the impressions column still reads zero. Nothing was blocking it. It was losing every auction on rank, and the three impression share numbers say so in plain arithmetic.
THE CAMPAIGN THAT IS GREEN EVERYWHERE AND SHOWS NOWHERE
You built a Search campaign. You wrote the ad, picked the keywords, set a budget you could live with, and put a card on the account. The ad came back from review Approved. The campaign says Enabled. Next to it, in the calmest possible font, it says Eligible.
Then nothing. Day after day the impressions column reads 0. Clicks 0. Cost $0.00. The diagnostics card at the top says "Your campaign hasn't served in the past week", and the Impressions and Clicks tiles are marked Upcoming, which reads like a promise and is not one. Under that, Google recommends you set up conversion tracking. Good advice, and nothing to do with why the ad is not showing.
So you do the thing everyone does. You open a new tab and search for your own keyword. You are not there. Now you are sure something is broken: the review, the billing, the card, some setting you missed. You check them all. They are all fine.
We did exactly this, on our own campaign. It was published August 13, 2026, and on September 2 we read the whole thing back through the Google Ads API instead of the dashboard, because the dashboard kept insisting everything was fine. It was right. Everything was fine. The campaign was simply losing.
WHAT WE READ OFF OUR OWN CAMPAIGN
The Google Ads interface shows you a summary. The API shows you the fields, and the fields do not soften anything. We used the Google Ads Query Language (GAQL), which looks a lot like a database query, against the campaign, ad group, ad, keyword and metrics resources. You do not need to run these yourself. They show what "fine" looked like.
SELECT
campaign.name,
campaign.status,
campaign.primary_status,
campaign.bidding_strategy_type,
campaign.target_spend.cpc_bid_ceiling_micros,
campaign_budget.amount_micros
FROM campaign
WHERE campaign.status = 'ENABLED'
// what came back on September 2, 2026
status: ENABLED
primary_status: ELIGIBLE
bidding_strategy_type: TARGET_SPEND // Maximize clicks
cpc_bid_ceiling_micros: 3000000 // a $3.00 maximum cost per click
amount_micros: 10000000 // $10.00 per day
One small trap while reading it: in API version 25, campaign.start_date is not a recognised field, so
a query that asks for it fails before it returns anything. We know the start date because we published it.
Everything else came back cleanly.
Here is the full picture, every item measured on September 2:
- Campaign status Enabled, primary status ELIGIBLE.
- Billing setup APPROVED, and approved since August 13, the day the campaign went live.
- One ad group, ELIGIBLE.
- One responsive search ad, reviewed and APPROVED.
- Eight phrase match keywords, all APPROVED.
- Bidding: Maximize clicks, which the API calls TARGET_SPEND, with a maximum cost per click (CPC) bid limit of $3.00.
- Budget: $10.00 per day.
- Location targeting: United States.
- Over the last 30 days, which covers every day the campaign has existed: 0 impressions, 0 clicks, $0 spent.
Not one thing on that list is a fault. That is the whole problem with this failure: it has no error message.
ELIGIBLE MEANS ALLOWED IN, NOT PICKED
Here is the sentence that saves you a week. Eligible is a statement about permission. It is not a statement about delivery.
Eligible means: not paused, not removed, not ended, not waiting on review, not disapproved for policy, not blocked by billing. Nothing is stopping the campaign from entering an auction. That is all it says.
Every search someone types runs an auction among the advertisers whose keywords match. Each one enters with an Ad Rank, roughly your bid multiplied by Google's estimate of your ad's quality, plus some allowance for the assets attached to it. If yours is too low to clear the bar for the page, your ad does not show, and Google does not tell you it lost. There is no status called Losing. The campaign stays Eligible, because it is, and it sits there being eligible for as long as you let it.
A new campaign starts with no quality history at all, so early on the bid is carrying most of the Ad Rank on its own. Google has never seen anyone click your ad and has no reason to rate it well yet. That is what makes a low bid ceiling so much worse on a fresh campaign than on an old one.
THE THREE IMPRESSION SHARE NUMBERS SAY WHICH WALL YOU HIT
Google does keep score of the auctions you lost. It files it under a name most small business owners never open: impression share. Three fields, and between them they tell you whether the problem is money, rank, or nothing.
SELECT
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.search_impression_share,
metrics.search_rank_lost_impression_share,
metrics.search_budget_lost_impression_share
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
// what came back
impressions: 0
clicks: 0
cost_micros: 0
search_impression_share: 0.0999 // Google's floor for "under 10 percent"
search_rank_lost_impression_share: 0.9001 // lost on Ad Rank
search_budget_lost_impression_share: 0 // lost because the budget ran out
Search impression share is the impressions you got divided by the impressions you were eligible to get. Ours reads 0.0999. That is not a real number. Google does not report anything below 10 percent precisely; it reports "under 10 percent", and the API spells that as 0.0999. With zero impressions the honest value is zero, and 0.0999 is the floor it sits on.
Lost impression share (rank) is the share of eligible auctions you lost because your Ad Rank was too low. Ours is 0.9001. Ninety percent, and the missing ten is the floor from the line above. Every auction we qualified for, we lost on rank.
Lost impression share (budget) is the share you lost because the daily budget had already run out. Ours is 0. Not one auction was lost for lack of money, because the campaign never spent any.
The three add up to roughly one, and the shape of the split is the diagnosis. Lost to budget high and lost to rank low means you are winning when you can afford to and running out early: raise the budget. Lost to rank high and lost to budget zero means the money is sitting untouched because the bid never clears the bar: raise the bid. Ours is the second shape, about as clean an example of it as you will ever see.
A $3 CEILING ON SOFTWARE KEYWORDS IS A BID THAT NEVER GETS IN THE ROOM
Maximize clicks with a bid limit looks like the careful choice. Chase clicks, but never pay more than $3.00 for one. It feels like a seatbelt.
It is a ceiling, and Google will not go through it. If the first page for a keyword costs more than $3, the campaign cannot bid enough to get there, so it bids and loses, every time, on every keyword, and never spends a cent. That is why lost to budget reads zero. The ceiling made the budget irrelevant.
Our keywords are software category terms: "roas tracking software", "marketing attribution for small business", "keap reporting". Terms like these cost well above $3 to land on the first page, and more again for a campaign with no quality history to lean on. The bid limit was not protecting us from an expensive click. It was guaranteeing we never got one.
RARELY SERVED MEANS NOBODY TYPES THAT
Three of the eight keywords carried a second flag: RARELY_SERVED, with the reason AD_GROUP_CRITERION_RARELY_SERVED. Google's plain meaning is that the search volume for that keyword is so close to zero that it does not bother running it.
Ours were "myvitalassistant", "keap roas" and "keap marketing reports". The first is our own product name and nobody is searching for it yet, which is fair. The other two are about Keap specifically, and there is a reason those are thin: Keap's installed base is roughly fifteen to twenty thousand businesses, and it is not growing. Take the slice who run Google Ads, then the slice who would type "keap roas" into a search box in any given month, and you are down to a handful of people. Google looked at that and, correctly, declined to hold an auction.
A rarely served keyword cannot be rescued by a bid. There is no auction to win. The other five, "keap google ads", "keap reporting", "roas tracking software", "marketing attribution for small business" and "keap attribution", were all plain eligible, so they were in auctions and losing them. Two different problems, two different fixes.
Keep the flag in view after you raise the bid. If a keyword still shows nothing a week later, look for rarely served before raising the bid again. Paying more for a keyword nobody types buys exactly what you had.
THE FIX, IN ORDER: BID AND BUDGET FIRST
Do these in sequence. The first two undo the cause. Everything after them makes the clicks you then get worth having.
Step 1: lift or remove the maximum cost per click limit. On Maximize clicks, either remove the bid limit entirely or raise it to something the market will accept. If you would rather hold the wheel yourself, switch to manual cost per click and set $5 to $10 on the Keap terms. That is not a small number for a small business, and it is the going rate for a software keyword. A bid that cannot reach the first page is not a cheaper click. It is no click.
Step 2: decide what the daily budget buys. At $10 a day and $5 or more a click, you are buying one or two clicks a day. That is too thin to learn from: ten visits a week tells you nothing about which keyword works. Run $25 to $30 a day for two weeks, look at what came in, then trim. And know the overdelivery rule before you set it: Google may spend up to double your daily budget on a single day, evening it out across the month, so $30 a day can be a $60 day and that is not a bug.
THEN KEYWORDS, NEGATIVES AND THE AD ITSELF
Step 3: pause the rarely served keywords. They cost nothing, but they are noise in every report, and they tempt you into thinking eight keywords are running when five are.
Step 4: add terms people actually type. Our list leaned on the CRM name, and the CRM name is the thin part. Broaden toward the problem: "google ads roas tracking", "offline conversion tracking software", "call tracking attribution", "marketing attribution software". Those are typed by people who have the problem and do not yet know which CRM the answer should plug into.
Step 5: add negatives before the clicks arrive, not after. Once you are bidding at market rate, every wrong click costs real money. The words that reliably signal someone who will never buy: free, login, jobs, salary, tutorial, course, certification, support. Add them as campaign negatives today. Somebody searching "roas tracking software free" is not a lead, and at $8 a click you do not want to find that out forty times.
Step 6: fill the ad. A responsive search ad with a handful of headlines is a weak ad, and ad strength feeds Ad Rank. Get it to ten or more headlines. Add sitelinks, callouts and a structured snippet: they count toward the score and make the ad physically bigger on the page. Point the final URL at a page about the specific thing the keyword promised, not the home page.
Step 7: check two settings that default the wrong way. Under Locations, Google defaults to Presence or interest, which shows your ad to people anywhere in the world who have shown interest in the United States. Switch it to Presence, so you pay for people who are actually there. Under Networks, keep Display expansion off, or a Search campaign spends its first real budget on banner impressions you never planned for.
THEN MAKE THE CLICK WORTH SOMETHING
Step 8: make sure the landing page captures the click id. The page someone lands on from your ad
carries a gclid parameter in its address, Google's identifier for that click. If nothing stores it, the
click is anonymous the moment the person leaves, and when they buy from you three weeks later there is no way to
tell Google, or yourself, which campaign earned it. Store it in a first party cookie and carry it onto the form, so
it lands on the contact record in your CRM. That is how we do it for ourselves and for clients, through
MyVitalAssistant, and the cookie itself is
guide 1 in this series.
Step 9: let conversion tracking arrive from real sales. Google's recommendation to set up conversion tracking is right, but the usual way of following it, counting a form fill as a conversion, teaches the algorithm to find people who fill in forms. You want it to find people who pay. Feed it closed sales, the ones that trace back to the click id you stored, and leave the campaign on Maximize clicks while it learns. Only switch to Maximize conversions once you have 15 to 30 real conversions to train on. Earlier than that is an empty spreadsheet handed to an algorithm with a request to find patterns.
VERIFY WITH THE NUMBERS, NEVER BY SEARCHING FOR YOURSELF
Step 10: check it the way Google does. A day or two after the bid change, read the same three impression share numbers again. Search impression share should climb off the 0.0999 floor and lost to rank should fall. If lost to budget starts rising instead, you are winning auctions and running out of money, which is the good problem, and step 2 is where you fix it.
If you want to see the ad with your own eyes, use the Ad Preview and Diagnosis tool inside Google Ads. It shows you the results page for any keyword and location, tells you whether your ad is showing and why not if it is not, and records no impression while doing it.
Do not search for your own ad in a normal browser. Every search you do not click on is an impression with no click against your ad, which drags down its click through rate, which is a quality signal, which lowers the Ad Rank you just paid to raise. And even when the ad is serving you may not see it: Google personalises results, and your own location, history and account can hide it from you and nobody else.
If yours reads Eligible with nothing in the impressions column, the first place to look is not the review queue. It is the bid.
COMMON QUESTIONS
Getting the ad to show is where most guides stop. The second half is knowing which of those clicks turned into revenue, three weeks and a phone call later, and that is where most small business accounts go dark. We have been connecting Keap to the rest of the stack since 2010. If you would like the two halves joined up, that is a conversation worth having.
Book a Free Consult