Auction theory and bidding strategy: how I set paid search bids with maths

TL;DR

Difficulty: Intermediate

Google sells clicks in an auction where the advertiser below you sets your price. In a single slot second price auction the right bid is exactly what a click is worth to you. Across several positions (the generalised second price auction) that stops being true, so the value of a click is the ceiling, not the bid. That value comes from your own margin, mean order and conversion rate, and the same sum gives the Target ROAS you hand to Smart Bidding. Spend until the marginal return crosses break even, not until the average looks tired.

Paid search is an auction, not a price list, and the price you pay is set by your neighbours. In this article I take the auction theory that was worked out for exactly this market, Vickrey's second price rule and the generalised version Google runs, and show how I turn it into a maximum bid, a Target ROAS guardrail and a spending ceiling for an invented kitchenware shop in Galway.

When you buy a click on Google, you are not buying off a price list. You are bidding in an auction that runs in the fraction of a second between someone pressing enter and the results appearing. Every advertiser whose keyword matches the search puts in a bid, Google ranks them, and the price each one pays depends mostly on what the advertiser just below them was prepared to pay. Your bid decides whether you win and roughly where you land. The bill is set by your neighbours.

That changes how I think about spend. Raising a bid does not simply buy more clicks at a higher price, the way ordering more stock would. It moves you up a queue in which the people around you are also moving. Auction theory is the branch of economics that studies this kind of game, and it has been worked out in detail for the auction Google runs. This article is the part of it I actually use. I stay with Google Ads throughout, because its help pages are the ones I can quote. The ideas carry over to Microsoft Advertising, the exact rules you would check in Microsoft's own documentation.

Throughout I use an invented shop, Harbourside Homeware, an online kitchenware retailer in Galway run by a man called Tomás. Nobody real, every number made up so I can show every step.

Vickrey's second price auction: pay the runner up's bid, so bid what the click is worth

In 1961 William Vickrey published a paper in the Journal of Finance describing an auction in which the highest bidder wins but pays the second highest bid, not their own.1 It sounds like a gift to the winner. The point is subtler: in a second price auction, the best thing you can do is bid exactly what the item is worth to you.

Here is why. Your bid does not set your price, it only sets whether you win. Bid below your true value and you risk losing an auction you would happily have won at the going price. Bid above it and you risk winning one where you pay more than the item is worth to you. Bidding your true value avoids both, whatever anyone else does. Economists call that a dominant strategy, and the auction "truthful".

For a single slot, the profit from winning is:

π=(v−b(2))×n\pi = (v - b_{(2)}) \times n

Here π\pi is the profit, vv is the value of one click to you, b(2)b_{(2)} is the second highest bid, which is what you pay per click, and nn is the number of clicks the slot delivers. The value vv is an expected value, the average worth of a click across the many that convert and the many that do not, covered from scratch in Foundations: expected value.

Worked example: one slot, three bidders

Suppose there were only one advert slot for the search "cast iron casserole dish". Tomás values a click on that term at €1.20. Two rivals bid €0.90 and €0.60. If Tomás bids his true value he wins and pays the runner up's €0.90, so on 500 clicks a week his profit is π=(1.20−0.90)×500=€150\pi = (1.20 - 0.90) \times 500 = €150, where 1.201.20 is his value vv, 0.900.90 is b(2)b_{(2)} and 500500 is nn.

Had he bid €0.80 to save a few cent, he would have lost to the €0.90 bidder and made nothing. Had he bid €2.00 to be sure of it, he would still have paid €0.90, and the day a rival bids €1.50 he would overpay. Bidding exactly €1.20 is the one bid that never regrets. If that were the whole story, bidding would be solved. The complication is that Google does not sell one slot.

Search sells several positions at once, and that breaks the truthful bid

A results page has several advert positions, and the top one gets more clicks than the second, which gets more than the third. Google ranks the bidders and each pays, roughly, the bid of the advertiser just below. Economists call this the generalised second price auction, or GSP.

In 2007 Benjamin Edelman, Michael Ostrovsky and Michael Schwarz published the paper in the American Economic Review that pinned down how it behaves.2 Their finding surprised most of the industry: GSP is not truthful. It looks like Vickrey's auction stretched across several slots, but it does not inherit the property that made Vickrey's auction clever. Bidding your true value is generally not your best move, and no single bid is best whatever your rivals do.

The payment rule, in its simplest form:

pk=bk+1p_k = b_{k+1}

Here pkp_k is the price per click paid by the advertiser in position kk, and bk+1b_{k+1} is the bid of the advertiser one place below. Position one pays the bid of position two, and the last advertiser shown pays the reserve price, which I come to below. A price per click is a rate, the subject of Foundations: ratios and rates.

Truth telling fails because bidding your value can win the top slot at a price that eats your margin, when the slot below would have delivered nearly as many clicks for far less.

Worked example: why Tomás bids below his value for the stand mixer

Harbourside sells a stand mixer at €400 with €160 of margin. One click in 16 on the search "stand mixer" becomes an order, so a click is worth €10 to Tomás. Two rivals bid €4 and €2. Position one gets 200 clicks a day on this term, position two 180.

If Tomás bids his true value of €10, he takes position one, pays the €4 beneath him, and makes π1=(10−4)×200=€1,200\pi_1 = (10 - 4) \times 200 = €1{,}200 a day. If instead he bids €3, he drops to position two, pays the €2 beneath him, gets 180 clicks, and makes π2=(10−2)×180=€1,440\pi_2 = (10 - 2) \times 180 = €1{,}440. Here π1\pi_1 and π2\pi_2 are the daily profits in the two positions.

The lower bid earns €240 a day more. Bidding the truth cost him money, which could never happen in Vickrey's single slot auction. That is the Edelman, Ostrovsky and Schwarz result in one example: the gap in clicks between positions and the gap in price between positions decide the right bid, and they are not the same gap. Whether the trade is there on a given term you learn only by testing. In my experience the drop from first to second is smaller than people fear on specific product searches and larger on broad ones. Either way, on search "bid what it is worth" is the ceiling, not the recipe.

How Google actually ranks you: Ad Rank, quality, thresholds and the price you pay

Google does not rank by bid alone, so the GSP above is still too simple. Its help pages describe Ad Rank as a score calculated from your bid, the quality of your ads and landing page at the moment of the auction, the Ad Rank thresholds, how competitive the auction is, the context of the search (location, device, time, the other results on the page) and the expected impact of your assets and ad formats. It is calculated twice: once to decide whether you are eligible to show at all, and again to place you against the other eligible adverts.3

The price follows the GSP logic, but on Ad Rank rather than on raw bids. Google says you pay only what is minimally required to clear the thresholds and beat the Ad Rank of the competitor directly below you, that competitors further down also influence the price, and that you are never charged more than your maximum bid unless you use automated bidding or bid adjustments.4

One correction to the textbook version, which the old edition of this article repeated. The familiar line "Ad Rank equals maximum bid times Quality Score" treats the 1 to 10 Quality Score in the interface as the auction input. Google is explicit that it is not. Quality Score is a diagnostic built from three components (expected click through rate, ad relevance and landing page experience), and the help page states that it is not an input in the ad auction.5 The auction uses live estimates of the same sort of signals, per search. So the textbook formula is a model of the shape of the thing, not the rule Google runs. With that caveat, here it is, because it is still the clearest way to see why quality lowers your price:

Ad Ranki=bi×qipk=Ad Rankk+1qk\text{Ad Rank}_i = b_i \times q_i \qquad p_k = \frac{\text{Ad Rank}_{k+1}}{q_k}

Here bib_i is the maximum bid of advertiser ii, qiq_i is a quality weight standing in for the live quality estimate, Ad Ranki\text{Ad Rank}_i is the resulting score, pkp_k is the price per click paid by the advertiser in position kk, and Ad Rankk+1\text{Ad Rank}_{k+1} is the score of the advertiser one place below. The price you pay is the score you had to beat, divided by your own quality. Double your quality weight and you halve the price of beating the same neighbour. A rate against a base, as in Foundations: ratios and rates.

How one search auction runsA top to bottom flow: a search is entered, matching adverts are found, ineligible ones are removed, an Ad Rank is calculated for each from bid and live quality, adverts below the threshold are dropped, the rest are ordered by Ad Rank, and each pays the minimum needed to beat the advert below.Someone searches for a termGoogle finds every advert whose keywordmatchesIneligible adverts are removed (wrongcountry, policy)Ad Rank is calculated: bid, livequality, context, assetsDoes the Ad Rank clear thethreshold?noThe advert does not showyesAdverts are ordered by Ad RankEach pays the minimum needed to beatthe advert below, never more than itsmaximum bid

The diagram reads from the search at the top to the price at the bottom. The decision box is where the reserve price lives, and the last box is the second price rule applied to Ad Rank.

Worked example: Tomás outranks a higher bid and pays less

Three shops compete on "cast iron casserole dish". In the model, Tomás bids €1.00 with a quality weight of 8, a rival bids €1.50 with a quality weight of 4, and a third bids €0.80 with a quality weight of 5. The Ad Ranks are 1.00×8=81.00 \times 8 = 8, 1.50×4=61.50 \times 4 = 6 and 0.80×5=40.80 \times 5 = 4.

Tomás is first despite the lower bid. His price is the score he had to beat divided by his quality, p1=68=€0.75p_1 = \frac{6}{8} = €0.75, while the rival in second pays p2=44=€1.00p_2 = \frac{4}{4} = €1.00 for a worse position. Google rounds the price up to the smallest billable unit in your currency, which is where the "plus one cent" in older descriptions comes from.6 The quality weight is doing the work, and quality is the lever Tomás controls through his advert text and landing page without paying more per click.

Reserve prices: the threshold you cannot see, and what you can

A reserve price is the lowest price the seller will accept. In Google Ads it appears as the Ad Rank threshold, the minimum score an advert needs to show at all. Google says thresholds are set dynamically at each auction and depend on ad quality (lower quality adverts face higher thresholds), the position on the page (higher positions have higher thresholds), the user's location and device, and the topic of the search. If you are the only eligible advertiser, you pay the reserve price, the threshold rounded up to the billable unit.6

So there is no fixed reserve to discover. The old edition of this article claimed you can infer it from sudden drops in impressions. I no longer think that is defensible. A drop in impressions has a good few causes, a rival's new campaign, a budget cap, a lull in searches, a change in your own quality signals, and nothing in the account tells you which share was the threshold.

What you can see is impression share, which Google defines as the impressions your adverts received divided by the total eligible impressions.7 In the accounts I run, the interface splits the lost share into the part lost to rank and the part lost to budget, and the rank part is the honest signal that your Ad Rank is not clearing enough auctions. It tells you there is a threshold problem, not where the threshold is.

An example: Harbourside's casserole ad group shows an impression share of 45%, with 40% lost to rank and 15% lost to budget. More budget would buy at most the 15%. The 40% needs either a higher bid, which costs money on every click, or better quality, which costs effort once. Tomás rewrites the headline to name the product and sends the click to the casserole page rather than the cookware category, an afternoon's work and no bother to anyone. Whether that moved the threshold he will never know. Whether his impression share rose, he reads off the next report.

The break even bid: what a click is worth comes from margin and conversion rate

Everything above assumes you know what a click is worth to you. Most advertisers do not, and the auction charges them for it. The number comes from three figures you already have: your mean order value, the share of it that is margin after goods, delivery and payment fees, and the share of clicks that turn into orders.

v=m×xˉ×rv = m \times \bar{x} \times r

Here vv is the value of one click, mm is the contribution margin as a share of revenue, xˉ\bar{x} is the mean order value, and rr is the conversion rate from click to order. Margin per order times the probability that a click produces an order is the expected margin of a click, the idea in Foundations: expected value. The mean order is the plain mean from Foundations: the mean. Paying vv for a click leaves nothing. It is the break even bid, the ceiling for any maximum cost per click.

A profit target shaves it down. To keep a share kk of the margin as profit:

b∗=(1−k)×vb^{*} = (1 - k) \times v

Here b∗b^{*} is the maximum cost per click you set, kk is the share of the click's margin you insist on keeping, and vv is the break even value. The percentage arithmetic is in Foundations: percentages.

Worked example: Harbourside's maximum cost per click

Tomás's mean order is €85. After goods, delivery and payment fees he keeps 40% of revenue, so €34 of margin per order. Of the people who click a search advert, 3% order. So v=0.40×85×0.03=€1.02v = 0.40 \times 85 \times 0.03 = €1.02, with m=0.40m = 0.40, xˉ=85\bar{x} = 85 and r=0.03r = 0.03.

That is the break even bid: 100 clicks at €1.02 cost €102 and produce three orders carrying €102 of margin. Any click bought above €1.02 loses money on average, however good position one feels.

Tomás wants to keep 30% of the margin as profit, so k=0.30k = 0.30 and b∗=0.70×1.02=€0.71b^{*} = 0.70 \times 1.02 = €0.71. Every term gets its own version of this sum, because conversion rate and order value differ by term. On the brand term "harbourside homeware", clicks convert at 9%, so v=0.40×85×0.09=€3.06v = 0.40 \times 85 \times 0.09 = €3.06, comfortably above the 30 cent those clicks cost. On the generic "kitchenware", clicks convert at 1%, so v=€0.34v = €0.34, and at 70 cent a click Tomás loses 36 cent on every one. Expected profit per click, r×mxˉ−cr \times m\bar{x} - c with cc the actual cost per click, is the number I sort every keyword by, and the ones below zero are the first to pause, however much traffic they bring. Bidding on the customer's lifetime value rather than the first order is in bid on lifetime value, not cost per click.

The marginal euro: the average return hides the moment to stop

The break even bid tells you the most to pay per click, not how many clicks to buy. For that you need the marginal return: what the next euro of spend brings back, as opposed to what the average euro has brought back so far. The two drift apart as you spend more, because the early spend buys the easiest clicks, people who searched for exactly your product, and every euro after that buys broader terms, lower positions and people further from buying. In an auction the effect is doubled, because more clicks also means bidding into more expensive positions.

marginal ROAS=ΔRΔS\text{marginal ROAS} = \frac{\Delta R}{\Delta S}

Here ΔR\Delta R is the extra revenue from a step up in spend and ΔS\Delta S is the size of that step. Average return on ad spend is total revenue over total spend. Why to read the marginal number rather than the average is in Foundations: marginal against average, and at length in marginal ROI against average ROI.

Worked example: Harbourside's spend ladder

Tomás tests five monthly spend levels over five months on the same campaigns and records the revenue each produced. Made up figures, round enough to follow.

Average and marginal return on ad spendTwo lines against monthly spend from €2,000 to €10,000. The average return falls gently from 4.5 to 2.65. The marginal return falls steeply from 4.5 to 1.0 and crosses the break even level of 2.5 between €6,000 and €8,000.Return on ad spend as Harbourside raises monthly spend01.32.53.85€2,000€4,000€6,000€8,000€10,000Average ROASMarginal ROASRevenue per €1 of spendMonthly spend

The horizontal axis is monthly spend, the vertical axis revenue per euro spent. The upper line is the average return: €9,000 of revenue on €2,000 is 4.5, €16,000 on €4,000 is 4.0, €21,500 on €6,000 is 3.58, €24,500 on €8,000 is 3.06 and €26,500 on €10,000 is 2.65. The lower line is the marginal return of each €2,000 step: the step from €4,000 to €6,000 added €5,500, so 5,5002,000=2.75\frac{5{,}500}{2{,}000} = 2.75, the step to €8,000 added €3,000, so 1.5, and the step to €10,000 added €2,000, so 1.0.

Tomás's margin is 40%, so a euro of spend must bring back €2.50 of revenue to pay for itself (the next section shows why). The marginal line crosses 2.5 between €6,000 and €8,000. The average is still 3.06 at €8,000, which looks grand, and that is the problem: it hides that the last €2,000 came back as €3,000 of revenue, €1,200 of margin, a loss of €800.

Monthly profit at each spend levelFive bars showing profit after ad spend at monthly spends of €2,000 to €10,000: €1,600, €2,400, €2,600, €1,800 and €600. The peak is at €6,000.Profit after ad spend at each monthly spend level€0€1,250€2,500€3,750€5,000€1,600€2,000€2,400€4,000€2,600€6,000€1,800€8,000€600€10,000Profit in €Monthly spend

The bars are margin minus spend at each level: at €6,000, 40% of €21,500 is €8,600, less €6,000 of spend, leaves €2,600. Profit peaks at €6,000 and falls either side. The average return never said stop. The marginal return said stop two steps before the average would have.

Target ROAS as a guardrail: the break even in units the machine accepts

Most accounts I see are no longer on manual bids. Google's Smart Bidding sets the bid in each auction from a target you give it. Its help page describes the strategies, Target CPA, Target ROAS, Maximise conversions and Maximise conversion value, as using machine learning to predict how different bids affect conversions or conversion value in every auction, from signals such as device, location, time of day, audience list membership, browser, the search query itself and on site behaviour.8 You no longer set the bid, you set the target, and the question becomes which target.

The break even logic answers it. If you keep a share mm of revenue as margin, the revenue you need per euro of spend to break even is one over mm, and to keep a share kk of the margin as profit it is:

ROASbreak even=1mROAStarget=1m(1−k)\text{ROAS}_{\text{break even}} = \frac{1}{m} \qquad \text{ROAS}_{\text{target}} = \frac{1}{m(1-k)}

Here mm is the contribution margin as a share of revenue, kk is the share of margin you want to keep, ROASbreak even\text{ROAS}_{\text{break even}} is the return at which the campaign neither makes nor loses money, and ROAStarget\text{ROAS}_{\text{target}} is the number you give the strategy. Google expresses Target ROAS as conversion value per unit of spend multiplied by 100, so 500% means €5 of value for every €1 spent, and recommends at least 15 conversions in the past 30 days before a Search campaign uses it.9 Percentages and their traps are in Foundations: percentages.

Worked example: Tomás's guardrail

Tomás's margin is 40%, so ROASbreak even=10.40=2.5\text{ROAS}_{\text{break even}} = \frac{1}{0.40} = 2.5, or 250%. He wants to keep 30% of the margin, so ROAStarget=10.40×0.70=3.57\text{ROAS}_{\text{target}} = \frac{1}{0.40 \times 0.70} = 3.57, which he rounds to 360%, with m=0.40m = 0.40 and k=0.30k = 0.30.

Check it against the spend ladder: the average return is 3.58 at €6,000 and 3.06 at €8,000, so a strategy holding the account near 360% settles close to €6,000 a month, where the profit bars peaked. The target was not plucked from a benchmark. It came from the margin, and it lands on the same answer as the marginal analysis.

Two cautions from experience. Target ROAS steers to an average, not a marginal return, so it will spend the last euro well below the target as long as the earlier spend carries the average. Set the target a notch above the sum, or cap the budget where the marginal return crosses break even. And the strategy is only as good as the conversion value you feed it: report revenue and it optimises revenue, so if you want it to protect margin, report margin. Feeding the machine your own data is the subject of auto bidding based on first party and external data sets, and keeping control of automated campaigns of the shift to black box campaigns.

One mechanism worth understanding, stated as a mechanism and not as a measured fact. When many advertisers in the same auctions hand their bids to the same strategy with the same objective, it values the same searches highly for all of them, bids rise together, and the second price each pays is set by another copy of the same model. Nothing has to be coordinated for prices to climb. How much this happens I cannot show from the outside, and I have cut the old edition's claims that dressed it up as collusion. What the rules do say is that the advertiser with the more accurate conversion values bids higher where it is truly worth it and lower where it is not, and in a second price auction that is the only edge there is.

First price moved in on display, and search stayed second price

Not every Google auction is second price any more. In March 2019 Google announced that Ad Manager, which sells publishers' display and video inventory programmatically, would move to a unified first price auction, where the winner pays what they bid, and said explicitly that the change did not apply to Google Search.10 In October 2021 AdSense followed, moving from second to first price to match Ad Manager and AdMob.11

For a bidder, first price is a different game. In a second price auction your bid is a statement of value and the price looks after itself. In a first price auction your bid is the price, so bidding your true value guarantees zero profit on every win. The right move is to shade the bid below your value, by an amount that depends on how many others bid and how strong they are, which is what a display platform's bidder does on your behalf. On search, you are still in Vickrey's world, with the GSP complications above.

An example: on search, Tomás's €3 bid on a stand mixer click worth €10 is a position choice, and he pays the €2 beneath him. On a first price display exchange, a bid of €3 pays €3. Shading to €1.50 wins fewer impressions but keeps €8.50 on each he does win.

Seasonality: let the machine handle December, and keep your hand on the ceiling

Auction prices move with the calendar because the number of bidders and the value they place on a click both move. In the retail accounts I have run, gift and homeware clicks cost more in November and December than in summer, and the conversion rate rises at the same time, so the break even bid rises too.

Google's position is that Smart Bidding already manages seasonal events, and it offers a seasonality adjustment only for short periods of one to seven days where you expect a sharp change in conversion rate, with a warning that it may not work as well over more than 14 days.12 I follow that, it is sound advice. I recalculate the break even value with the seasonal figures, move the Target ROAS only if the margin share genuinely changed, and let the strategy do the daily work.

An example: in December Harbourside's conversion rate rises from 3% to 4% and the mean order from €85 to €95. The break even click value becomes 0.40×95×0.04=€1.520.40 \times 95 \times 0.04 = €1.52, up from €1.02. The margin share is unchanged, so the 360% target stays, and the strategy, seeing more value per click, bids higher on its own. If Tomás runs free delivery in the last week before Christmas and his margin share drops to 34%, the target for that week rises to 10.34×0.70=4.2\frac{1}{0.34 \times 0.70} = 4.2, or 420%. The adjustment feature is for the one week spike. The margin arithmetic is for the rest.

How I actually set bids

I start from the margin, not from the auction. For each product group I compute the break even click value and the break even ROAS from the shop's own books, decide the profit share to keep, and turn that into a maximum cost per click for manual campaigns and a Target ROAS for automated ones. I read impression share lost to rank as a quality problem before a bid problem, test positions rather than assume the top one pays, and cap the budget where the marginal return crosses break even, because the average keeps saying everything is grand for two steps after it has stopped being true.

None of this outspends anyone. It only refuses to pay more for a click than the click is worth, and in an auction where your neighbours set your price, knowing your own value is the one advantage that cannot be bid away.

Footnotes

  1. William Vickrey, Counterspeculation, auctions, and competitive sealed tenders, Journal of Finance, volume 16, issue 1, pages 8 to 37, American Finance Association, 1961, https://ideas.repec.org/a/bla/jfinan/v16y1961i1p8-37.html

  2. Benjamin Edelman, Michael Ostrovsky and Michael Schwarz, Internet advertising and the generalized second price auction: selling billions of dollars worth of keywords, American Economic Review, volume 97, issue 1, pages 242 to 259, American Economic Association, 2007, https://www.aeaweb.org/articles?id=10.1257/aer.97.1.242

  3. Google, Ad Rank: definition, Google Ads Help, 2025, https://support.google.com/google-ads/answer/1752122

  4. Google, Actual cost per click (CPC): definition, Google Ads Help, 2025, https://support.google.com/google-ads/answer/6297

  5. Google, About Quality Score for Search campaigns, Google Ads Help, 2025, https://support.google.com/google-ads/answer/6167118

  6. Google, Ad Rank thresholds: definition, Google Ads Help, 2025, https://support.google.com/google-ads/answer/7634668

  7. Google, About impression share, Google Ads Help, 2025, https://support.google.com/google-ads/answer/2497703

  8. Google, About Smart Bidding, Google Ads Help, 2025, https://support.google.com/google-ads/answer/7065882

  9. Google, About Target ROAS bidding, Google Ads Help, 2025, https://support.google.com/google-ads/answer/6268637

  10. Sam Cox, Simplifying programmatic: first price auctions for Google Ad Manager, Google Ad Manager blog, 6 March 2019, https://blog.google/products/admanager/simplifying-programmatic-first-price-auctions-google-ad-manager/

  11. Matt Wong, Moving AdSense to a first price auction, Google AdSense blog, 7 October 2021, https://blog.google/products/adsense/our-move-to-a-first-price-auction/

  12. Google, About seasonality adjustments, Google Ads Help, 2025, https://support.google.com/google-ads/answer/10369906

If you would like your own break even bid and Target ROAS worked out from your margin rather than from a benchmark, I run a free workshop, and the first two weeks of work are on me. Bring the three numbers, I will bring the auction.