You launch a regional campaign.
Week 1 looks solid. Week 2 stabilizes.
By Week 3:
-
Reach stops growing
-
A few ZIPs are carrying most of the impressions
-
Frequency climbs into double digits in those pockets
-
CPA starts drifting
Nothing is broken. But nothing is improving either.
Why this happens
Most DSPs optimize toward auction efficiency, not toward true local business patterns.
Inside your geo fence, the algorithm doesn’t know:
-
Which ZIPs over-index for real customers
-
Which neighborhoods drive store visits vs. just clicks
-
Where conversion density actually exists
So it leans into the easiest inventory to win, and keeps reinforcing that loop.
You get concentration, not coverage.
The trigger moment
You adjust when you see:
-
Performance plateau after Week 2–3
-
Frequency imbalance (10–15+ in some ZIPs, 1–2 in others)
-
Geo CPA variance (2–3x differences across neighborhoods)
-
Reach growth slowing even though spend is steady
That’s your signal the algorithm is optimizing around cost, not customer value.
What fixes it
Instead of one broad geo fence, you:
-
Rank neighborhoods based on behavioral or catchment signals
-
Segment high-value ZIPs from low-value ones
-
Shift budget and frequency caps accordingly
You’re still buying programmatically.
You’re just feeding the system better local signals so delivery balances across the full trade area.
When you do it right, you typically see:
-
More stable CPA across ZIPs
-
Reach expansion beyond the “easy” pockets
-
Lower wasted frequency
-
Stronger incremental lift in under-delivered areas
Sometimes the issue isn’t the bid strategy.
It’s the inputs.