CASE STUDY · LPI · 2024–2025
Ad System
Re-Architecture
Our Google Ad Manager setup hadn’t changed since 2011, and it hit a hard limit that stopped new ads from launching. I rebuilt how we traffic ads and protected $7.5M in ad revenue growth.
$7.5M
revenue growth protected, 2025 to 2028
33,164
line items today, under the 61,000 cap
$32K
in outside costs avoided
15 hrs
of designer time saved each week
MY ROLE
Product Design Manager, acting as product owner and subject-matter expert for Google Ad Manager
TIMEFRAME
Cap first hit in late Q3 2024; the rebuild ran mostly late Q2 through Q3 2025
TEAM
Me, with ad ops, the ad design team, sales and development
PLATFORM
Google Ad Manager, Parishes Online (POL), My Community Online (MCO), Salesforce, Miro
JUMP TO:
The Problem · The Forecast · Strategy · Migration · Challenges & Results
THE PROBLEM
Every ad sold became another line item
LPi sells digital ads on church listing pages across Parishes Online (POL) and its community version, My Community Online (MCO). Since 2011, every ad sold had been its own targeted line item in Google Ad Manager, and two years of fast growth broke that model.
In late Q3 2024, new campaigns stopped going live. We had hit Google Ad Manager’s hard cap of 61,000 line items, and nobody at LPi knew the platform well enough to say why. So I learned it.
Every ad turned out to be targeted twice. Removing the duplicate level dropped line items to about 44,000 and campaigns launched again. That bought time, not a fix. The audit found more:
One line item per ad, one creative per line item, and no naming conventions.
Tangled placements and ad units, some overlapping through targeting.
Guesswork: years of changes by teams who couldn’t see how it worked.
Under-delivery: hundreds of ads never fully delivered, often from setup errors.
MY ROLE
Learning the platform, then leading the fix
As Product Design Manager, I acted as product owner and Google Ad Manager subject-matter expert.
Learned Google Ad Manager from scratch and led the audit that got campaigns launching again.
Designed the new trafficking model, placement cleanup and naming conventions.
Built a phased roadmap with engineering, sales and support, and won leadership buy-in.
Set best practices with ad ops and sales, and wrote scripting requirements with development.
The legacy setup in Google Ad Manager: every ad sold got its own targeted line item and a single creative. Advertiser names and stats are blurred.
THE FORECAST
44 weeks to a dead stop
After the first fix, I tracked how fast line items came back: 43,400 on April 2, 2025, growing by about 400 a week. At that pace the cap would stop new ads in about 44 weeks, around January 2026. The rebuild ran mostly from late Q2 through Q3 2025.
Line items in use on April 2, 2025, against the 61,000 cap. Each stripe in the remaining space is one week at about 400 new line items.
61,000
line item hard cap in Google Ad Manager
43,400
line items with targeting on Apr 2, 2025
488
added in one week, Mar 25 to Apr 2
44
weeks left at that pace
$6M
a year in ad revenue at risk when the cap hit
2011
the last time the setup changed
My Miro board. One church listing with its premium spots sold out and 20 rotating ads needed 23 line items. The math underneath set the deadline.
STRATEGY
Fix the structure, not just the count
Restructure trafficking
One line item per placement instead of one per ad, built from templates.
Plan for regional search ads
A second system for regional search placements, so the next product starts on the new structure.
Match how ads are sold
Separate logic for listing ads, search- and location-based ads, and national ads.
Organize by placement
Reporting and inventory organized by placement within each account’s order.
New inventory for local sales
A new digital inventory system for the local ads our sales team sells.
Two rebuilds, one roadmap
The ad platform was rebuilt at the same time, so one phased roadmap kept the two compatible.
THE NEW MODEL
One order per account, one line item per placement
Premium spots are exclusive, so each keeps its own line item. Rotating spots share one line item per size, with every ad sold into that spot as a creative, so Google Ad Manager rotates them evenly. One listing went from 23 line items to 5.
One church listing with three premium ads and 20 rotating ads: 23 line items before, 5 after.
The concept from my Miro board, with the same listing worked through: three premium line items and two rotating line items holding ten ads each.
A rotating line item today, with ten advertisers’ creatives on it. Shared, non-exclusive spots are what keep the system sustainable. Advertiser details are blurred.
MAPPING AND CLEANUP
Untangling placements and ad units
Before moving a single ad, I mapped every placement and ad unit on both platforms, current and future. Once each placement pointed to exactly one ad unit, we could migrate one placement at a time.
BEFORE
POL listing placements (blue) feeding several ad units (pink) at once. Line item counts are from the last 30 days of impressions at the time. The ad design team had been manually configuring each ad, and the naming conventions and tangled placements were causing confusion and more errors.
AFTER
The same placements, each mapped to one new ad unit (green) under the new naming convention. After testing, we were able to retire the old placement names in favor of a naming convention the ad operations team could nderstand.
Every POL placement, on desktop and mobile, mapped by page.
The same map for MCO. The plans changed as both platforms were rebuilt.
EXECUTION
Migrating live ads without stopping them
I wrote the migration’s scripting requirements with development, and new setup practices with ad ops and sales. Regular demos and documentation kept everyone aligned.
Export historical impression and click data.
Rename each creative after its current line item.
Create one order per account from church IDs.
Create line items per church and placement, with the new naming scheme.
Move creatives to the new line items by placement, then archive the old ones.
The migration plan: one order per contract, a line item per placement, and the creatives under each. IDs are examples.
The POL/GAM roadmap, Q4 2024 into 2026. The Google Ad Manager overhaul ran alongside the platform rebuild. One internal note is blurred.
BUMPS ALONG THE WAY
What made it hard, and what we did
-
No one at LPi had real working knowledge of Google Ad Manager, including me at the start.
Change: I learned it, then documented the trafficking logic and best practices so the knowledge stays with the team.
-
A creative only made sense through its line item, so moving it would lose track of whose ad it was.
Change: a script renamed every creative after its current line item before anything moved.
-
Thousands of paid ads were live, so the migration couldn’t take the system down.
Change: one placement at a time, with room to troubleshoot after each.
-
The 17-person ad design team had a high-volume workload and needed to keep pushing ads live.
Change: we changed the system bit by bit, with demos, updates and documentation for every change.
-
Years of impression and click data sat on line items we planned to archive.
Change: the migration starts by exporting that data.
-
The platform that shows the ads was rebuilt at the same time as the system that serves them.
Change: one phased roadmap kept the two compatible.
-
Scripts flagged hundreds of ads that fit none of our solutions, often from manual setup errors.
Change: one-offs were fixed by hand; recurring errors were fixed in bulk through the Google Ad Manager API.
RESULTS
Room to grow, and a system people understand
Line items
Before: One per ad sold
Now: One per placement per account
Example listing
Before: 23 line items for 3 premium and 20 rotating ads
Now: 5 line items for the same ads
Organization
Before: No naming conventions, and placements tangled across ad units
Now: One order per account, one ad unit per placement, clear names
Room under the cap
Before: About 44 weeks left, with a halt projected for early 2026
Now: 33,164 line items with targeting, stable as sales grow
Ad delivery
Before: Hundreds of ads never fully delivered
Now: Scripts flag ads that fit no pattern, and recurring errors are fixed in bulk through the API
Weekly setup
Before: Hundreds of ads set up and switched by hand each week
Now: About 56 ads a day sync from Salesforce
$7.5M
revenue growth protected, on the path from $6.5M in 2025 to $14M projected for 2028
33,164
line items with targeting today, down from the 61,000 cap and stable
$32K
in outside costs avoided by doing the work in-house
~56
ads a day synced automatically from Salesforce
15
hours of designer time saved per week
The ad business kept running: the halt projected for early 2026 never happened.
Data we can trust: a structure built for scale and reliable reporting.
A new tool for local sales: better coordination between sales and operations.
Set up for what’s next: a framework for the coming regional inventory launch.
Orders today: each customer account has its own order, 6,504 in the list. Order names and stats are blurred.
Inside one order: eight line items, one for each placement with ads running on that listing.
LESSONS
A system failure became a foundation for growth
A technical limit exposed a decade of one-off decisions across sales, ad ops and platform design. Treating it as a systems problem, not a tooling problem, let me align the teams and rebuild the core trafficking logic.
The cap was the symptom. The structure was the problem.
Do the math early: a weekly count turned an emergency into a deadline the business could plan around.
Fix the structure, not the number: the first fix bought time; the model change removed the cliff.
Make the system readable: naming conventions and one ad unit per placement let ad ops reason about what they see.
Move in small, safe steps: one placement at a time kept paid ads running throughout.
LPi’s ROI review credits the project with protecting $7.5M: the path from $6.5M in 2025 to a projected $14M in 2028. The new structure also made the Salesforce automation possible.