January 15, 2026 paulbaranda

What Actually Drove Performance in PMax Over the Holidays

TL;DR

  • Holiday ads didn’t break. Panic almost did.

  • How customers actually buy mattered more than seasonality

  • BFCM and holiday promos are not the same thing and shouldn’t be treated like they are

  • Touching campaigns less helped more than “optimizing” them nonstop

  • Bid strategy worked when it matched real buying behavior

  • Slow budget scaling saved me from breaking things

If you’ve ever stared at Google Ads at night wondering what you accidentally messed up, keep reading.

"Performance Max doesn’t need constant babysitting. It needs a clean setup and someone willing to leave it alone."

Holiday advertising has a way of turning everything up. Competition spikes, CPCs climb, and suddenly every dip feels personal. If something is even slightly off in an ad account, the holidays will expose it quickly and usually at a higher cost than you’d like.

During the holiday period and into early January, my Performance Max feed-only campaigns didn’t see a ROAS drop. Conversion volume increased and efficiency held. Competition was heavier, but results came down far more to how the campaigns were managed than to the season itself.

These Performance Max feed-only campaigns run through Google Ads, with the store and product feed managed through Shopify. This is a pet retail business, but not an impulse-buy kind of one. People don’t usually click an ad and immediately check out. They browse, compare, think about it, leave, come back, and then buy. Quality, design, and fit matter more than urgency.

That buying behavior mattered a lot in how campaigns were structured and scaled, from how promotions were timed to how bidding and budgets were handled.

BFCM and Holiday Promos Are Not the Same Thing

One of the best decisions was treating BFCM and holiday promotions as completely separate environments.

BFCM is a beast. It’s loud, urgent, and expensive. During that window, retailers happily trade efficiency for volume and buyers behave accordingly. Trying to roll that mindset straight into December is like asking someone to sprint and jog at the same time.

I tested it before. It didn’t work. Performance got choppy and delivery became unpredictable because the system was trying to learn from two totally different shopping mindsets at once.

Once BFCM ended, those campaigns were shut off and replaced with holiday-specific promotions that better matched how people actually shop outside of flash-sale mode. Performance Max learns patterns. Mixing signals confuses it. Separating them helped things calm down.

This wasn’t a nice-to-have. It mattered.

Fix the Boring Stuff First

Before touching performance, the basics had to be right. Trust me, I learned this the hard way. A less-than-perfect Cloudflare setup bruised the site for a bit and quietly choked off things that ads actually depend on. Nothing like staring at a dashboard wondering why performance feels off, only to realize it’s not the campaign at all.

That meant:

  • Making sure Google could actually crawl and serve ads

  • Cutting out low-intent traffic that brought clicks but no buyers

  • Confirming conversions were tracking correctly

Feed-only Performance Max is ruthless about bad inputs. When these basics weren’t locked in, performance stalled in ways that looked like demand problems but weren’t. Once they were fixed, results improved without heroic effort.

Which was both relieving and mildly annoying.

Testing First, Then Getting Serious

The account didn’t start neatly segmented.

At first, a broader catalog test campaign was used to see what the system naturally leaned toward. Different price points. Different buying patterns. The goal was learning, not perfection.

One group made itself obvious pretty quickly. Higher price points, strong margins, solid conversion rates. Customers buying these items weren’t browsing for fun. They knew what they wanted.

Leaving that group mixed in with everything else was holding it back, so it got its own campaign.

This wasn’t overengineering. It was common sense showing up a little late.

Why the Bid Strategy Changed

Once that top performer stood on its own, the bid strategy changed too.

The broader catalog test campaign stayed on a value-based approach because prices and cart sizes varied. In that setup, customers often needed to add items to reach free shipping, so prioritizing higher cart values made sense.

The top-performing group was different. Those products already hit free shipping on their own. Customers weren’t building carts. They were buying one thing and checking out.

Using a value-based strategy there just made clicks more expensive. The system kept chasing bigger carts no one was trying to build. We didn’t need higher order value. We needed more qualified purchases.

Switching to a conversion-focused strategy fixed that. Simple.

Scaling Without Breaking Everything

Budgets weren’t scaled aggressively.

Increases stayed around 15 to 20 percent at a time. Bigger jumps pushed campaigns back into learning, caused CPC swings, and triggered the familiar “what did I touch” spiral.

I learned the hard way that stacking changes is a great way to learn nothing. Smaller, steadier increases kept performance readable and stress levels lower.

Volume First, Control Later

As budgets increased, targets were loosened, not tightened.

That gave campaigns room to find traffic instead of choking themselves out in competitive auctions. Tight targets too early slow learning and limit volume, especially with customers who take time to decide.

The order mattered. Let volume grow. See where performance settles. Then adjust. Doing it backward almost always caused problems.

Doing Less Is Still Doing Something

One of the hardest lessons is knowing when to stop touching things.

CPC swings used to trigger reactions. Looking back, many of those swings resolved on their own once the system finished adjusting. Jumping in too quickly usually made things worse and added unnecessary stress.

A few rules that stuck:

  • One change at a time

  • Don’t change budgets and bidding at the same time

  • Not every dip is an emergency

With Performance Max, restraint often beats activity.

Why Feed-Only Held Up

Feed-only Performance Max tends to behave better when auctions get crowded.

Fewer moving parts. Clearer intent. Less guessing. During the holidays, improvements came from clean inputs and pacing decisions, not clever hacks.

What mattered:

  • High-intent traffic

  • Clear offers

  • Consistent decisions

No magic. Just discipline.

Final Take

None of this is revolutionary. It’s mostly about judgment.

  • Separate major promo periods

  • Test broadly, then commit once patterns are obvious

  • Match bidding to how customers actually buy

  • Scale budgets slowly

  • Make fewer changes and let them work

Performance Max doesn’t need constant babysitting. It needs a clean setup and someone willing to leave it alone.

And sometimes the best optimization really is closing the tab and going for a walk.