[ad copy] heartbreaking

“For Sale: Baby Shoes, Never Worn”



Pause.



Read that headline above again.

There are two types of reactions to this headline: 

  • Type 1 – I am crying. The baby never made it to the point where the shoes would fit. My heart is broken.
  • Type 2 – Baby feet grow fast. They must have bought the wrong size. Let’s have ’em.

If your reaction was in camp 1, consider the power of the emotion it raised.

Can you write headlines that do the same?

– Nils

[e-commerce] Do you want to decrease return rates and increase profits?

Recognize this?

“Nils, our biggest orders have the highest return rates.”

Ouch! 

Yeah, I recognize that.

For fashion retailers, this is the single biggest pain when it comes to scaling their business.

Orders grow big not so much because people want to buy a lot of stuff. Orders grow big because people want to try a lot of stuff.

A lot of people order multiple variants of the same product (think: different sizes, different colors), with the intention to only buy one variant. The other variants simply get returned.

Now, here’s the thing: if you are tracking the total order value inside Google Ads and you are running Smart Bidding, then Smart Bidding will optimize towards the bigger orders with multiple variants of the same item, simply because they show higher order value.

Thus, here’s your problem: if you track the total order value (and don’t adjust conversion value based on returns), Google’s Smart Bidding will optimize for high return rate orders, thus increasing your cost of returns, and LOWERING your profits!

Here’s your solution: instead of tracking the total value of an order, try re-adjusting that value at the time of purchase by subtracting the expected/predicted cost of returns.

How?

A first simple way to do so is by implementing this little trick:

  1. Use the ‘item_group_id’ in your product feed to group all the variants (sizes, colors, materials) of the same product. (See details: https://support.google.com/merchants/answer/6324507)
  2. At the time of purchase, check to see if the order contains multiple items with the same item_group_id (e.g., the same jacket in size XS and S).
  3. If the order holds multiple items with the same item_group_id, only count one when you compute the conversion value that you send to Google Ads conversion tracking

Gone are these inflated conversion values for orders that are guaranteed to increase your cost of returns. And gone is the incentive for Google’s Smart Bidding to go after these types of cost-inflating clicks.

Fewer returns, and more profit!

– Nils

Let’s talk landing pages and how to decrease your CPA in high CPC lead gen

Want to decrease your CPA in high CPC lead gen campaigns?

I bet that your biggest opportunity right now is not adding more keywords, not adding more negatives, and not changing your bids either. Heck, not even improving your ad copy.

It’s your landing page. 

If you can increase the click-to-lead conversion rate by only 20%, look at what that would do to your CPA!

How? 

The basic setup for high conversion rate lead gen landing pages is mostly the same:

  1. Make sure all the technical stuff is taken care of: page is mobile-friendly, page load times under 3 secs, page functions on all browsers
  2. Place a hero image that shows the promise of the offering above the fold, highlight benefits (not features)
  3. Put a prominent CTA (left-aligned) that visually stands out (contrasting colors)
  4. Put a call-now button/contact form (right-aligned)
  5. Place the “about the company” section below the above
  6. Add more photos, videos, and details of the offering
  7. Add reviews, ratings, and testimonials that communicate trust and overcome objections (highlight key quotes)
  8. Add an FAQ that addresses common concerns, objections, or uncertainties
  9. End the page with a recap of the core benefits and the CTA
  10. Between each section, add a call-now button or CTA button that takes the user back to the form 

But those are just the basics!

If you are serious about beating the competition, you’ve got to take it two (maybe three) steps further to really decrease your CPA.

That’s where Ed Leake’s God Tier Landing Page Optimisation Checklist comes into play.

It’s a comprehensive 93-step checklist for your landing pages that will squeeze even the last 0.X% increase in conversion rate out of your landers. (Don’t worry, there’s an 80/20 filter for priorities – you don’t have to tackle all the steps at once.)

Here’s a sample:

NOTE: This checklist is a free update inside God Tier Ads. Free updates are a hallmark of God Tier Ads, and Ed will continue to provide them on a regular basis.

– Nils

PS:

If you’re serious about upping your PPC skills and still don’t have access to Ed’s God Tier Ads, consider using my referral link.  

Use my discount code “NILS100” at checkout for $100 off. Pay once, get lifetime access to everything.

I’d still share these tips without the kickback… Ed’s pro tips have made me way more money than I’ll ever see from commissions, but a few extra bucks is nice!

Here’s the link again: https://app.godtierads.com/gta-bonus-bundle/apnnu

Want to get paid what you’re worth in 2025?

Today, I am sharing a request from our PPC friend and long-time member of the community Duane Brown:

Wow. 10 year mark. I don’t even know what to say as I just launched this as an off-the-wall idea 10 years ago. Thank you for making this possible. 

Companies make salaries a black box affair because they want to pay everyone as little as possible. I’ve been told more than a few times not to discuss what I made with others.

Learning what the industry pays your colleague or that new junior hire means that none of us are leaving money on the table. 

Even now as someone who runs an agency, I strongly believe this to be true.

Last year, we got 1,060 responses. Survey Closes Feb 28th, 2025 midnight PST.

Let’s give Duane a hand: fill out the PPC Salary Survey. 

Here’s the link:
https://docs.google.com/forms/d/e/1FAIpQLSex4uhXPCA18aaMDQ22b6XyFEhZWRv6uPPMMx5JBRByPgNtpw/viewform

Results will launch by March 22nd, 2025.

– Nils

questions about scripts — here’s how to get them answered

A fellow member of the list, John Turnbull (name shared with permission), wrote in with a good question today:

Hi Nils,

Love what you’ve been doing for the PPC heads.

Quick question: I have negative keyword lists in my PMAX and Standard Shopping campaigns. 

Would your Negative Keyword Conflicts script tell me if there are any negative keyword conflicts within my Negative Keyword Lists for either of these campaign types? Or only for Search campaigns?

Keep up the good work! We appreciate you.

Thanks,

– JT

First: Thanks for the kind words, JT, and thank you for the question! I love helping out the PPC community, especially when it comes to scripts. So, please keep sending questions like these.

Second: The answer is No.

Third: I’ll let ChatGPT explain 🙂

JT’s question is not unique. I get questions like these frequently. 

Normally, I simply reply with a quick answer.

BUT, with ChatGPT releasing its “o3-mini-high” model that is really good at code, I decided to forward the question to see what it would come up with. I copy-pasted the script and the question.

Here’s the response:

“The script is designed to detect conflicts between positive keywords (the ones you’re bidding on) and negative keywords. 

It gathers the positive keywords from the keyword view (which is typically available only for Search campaigns), and then compares them to negatives (including those from negative keyword lists).

Because PMAX (Performance Max) and Standard Shopping campaigns do not operate with the same keyword targeting (in fact, they don’t have “positives” in the same sense as Search campaigns), the script will not find any conflicts in those campaign types—even if you attach negative keyword lists to them.

In short, the script is effectively only useful for Search campaigns where you have actual positive keyword criteria that could potentially be blocked by a negative.

So, if you run this script on an account that only has PMAX and Standard Shopping campaigns, 
it won’t report any conflicts because there are no positive keywords to conflict with your negatives.”

That’s a correct answer, and it only took 1 minute.

Quite impressive, if you ask me.

Here’s the thing: even if JavaScript is like ancient Greek to you and the sight of code makes you want to run for the hills, you can use AI tools like ChatGPT to understand exactly what a Google Ads Script does. In minutes!

All it takes is a simple question and the copy-pasting of some code.

Happy scripting 🙂

– Nils

Frustrated with ChatGPT not delivering your perfect Google Ads Script?

Are you struggling to get ChatGPT to whip up that perfect Google Ads Script for you?

I’m prepping my next online workshop and offering you my help in return for your questions/challenges.

If you have a great script idea and have had a hard time getting ChatGPT to create it, answer these questions below and I will try my best to help you (for free).

1. What is your script idea? (The more detail, the better.)
2. What prompt(s) did you use to get ChatGPT to create it for you?
3. Where and how did you get stuck? (Again, the more detail, the better.)

I cannot promise that I will completely solve your challenge, but I can promise a response that will get you at least one step closer to script victory!

– Nils

Tag Assistant No Longer Deprecated

I completely missed this one, and I think it is worth a mention:

I am a big fan of Google Tag Assistant, the Chrome extension to easily troubleshoot and resolve issues with Google Tag Manager and Google Tag implementations.

But then, Google did what Google does: the extension was marked as deprecated! It was replaced by the far less intuitive Tag Assistant Companion.

Oh no! The horror!

It haunted my nights. Sleep became a distant memory thanks to this.

Nah… not really.

There are lots of other ways to check my tags. 

But still, I loved the ease of using the Tag Assistant.

Luckily and surprisingly(?): Google has listened to user feedback and combined Tag Assistant Legacy and Tag Assistant Companion into a single, unified extension.

Yep, Tag Assistant FTW. 

You can quickly and easily test your tags with a single click on that lovely icon at the top of your browser.

All you have to do is UNINSTALL Tag Assistant Companion and re-install the Tag Assistant extension.

Here’s the link: https://chromewebstore.google.com/detail/tag-assistant/kejbdjndbnbjgmefkgdddjlbokphdefk

– Nils

‘mobileappcategory::69500’

Last week, I shared a little tactic to quickly and easily exclude all mobile apps from your PMax campaigns. You can find the details here: https://nilsrooijmans.com/excluding-all-mobile-app-placements-the-quicker-and-easier-way/

A long-time member of the list, Hana Kobzová (name shared with permission), sent a question that was asked often on LinkedIn and Reddit:

“Why do you recommend adding all those values from your list? Doesn’t ‘mobileappcategory::69500’ already cover everything?”

Great question! I also use ‘mobileappcategory::69500’ a lot for Display campaigns. It’s a quick way to easily add all mobile app categories to the placement exclusions in Display.

However, here’s the thing: Performance Max campaigns DO NOT have the option to exclude placement at the campaign level.

To exclude placements from PMax, you need to add the exclusion at the account level.

Also, the little trick of entering ‘mobileappcategory::69500’ in your placement exclusions does not work at the account level. Currently, the Google Ads UI throws this message when you try to save the exclusion: “An error occurred. Please try again or check your targeting options.”

So, as far as I know, copy-pasting all the Mobile App Placement Exclusions from this list and adding them at the account level is the quickest way to exclude all mobile apps from your PMax campaigns.

– Nils

PS: Want to always be in the know when Performance Max campaigns are showing your ads on bad placements?  Check out my Google Ads Script for PMax Placement Exclusions.

how to add Google Ads ad schedules in bulk

Have you ever wanted to add the same ad schedule to tens of campaigns?

I did. Today.

And trust me, the Google Ads UI makes it very hard to do this without you wanting to send your mouse on a one-way trip to the wall! You literally have to click each and every individual campaign, and add the ad schedules for each individual campaign… over and over again.

Luckily, there’s a quicker way: using Google Ads Editor.

Here’s how you do it:

1) Create your desired ad schedule in one campaign
2) Open Google Ads Editor
3) Download your campaigns
4) Select “Campaigns” in the type list
5) Select the campaign with the ad schedule you want to copy
6) Select “Edit” > “Copy shell”
7) Select all the campaigns where you want to paste the schedule
8) Click the Paste icon in the edit panel next to “Ad schedule”

That’s it. This saved my mouse from its funeral today.

– Nils

Tired of clicking 140 categories to exclude Mobile App Placements? Here’s the quicker way.

Two weeks ago, we talked about excluding Mobile App Placements in your PMax campaigns. (Remember? You don’t want PMax to show your ads on apps that only attract accidental clicks from the under-aged).

As we learned, excluding Mobile Apps at the account level is currently the only way to exclude them from your PMax campaigns. And, excluding them at the account level requires you to check 140 (!) Mobile App categories in the Google Ads interface.

140+ clicks just to protect your PMax campaigns from these dreadful placements that only waste your budget. Talk about time sinks…

Not anymore!

Thanks to a suggestion by fellow list member Maciej Ilczyszyn (name shared with permission), I learned about a quicker solution.

I created a script to pull all Mobile App Categories from the Google API and report them in a Google Sheet so we can use them to exclude them more easily!

Here’s how to quickly and easily exclude ALL Mobile App Placements from your account (and PMax campaigns): simply go to this Google Sheet, copy all the values in column B ‘Mobile App Placement Exclusions’, and add them to your exclusions.

That’s it! No more checking 140 boxes.

More details here: https://nilsrooijmans.com/excluding-all-mobile-app-placements-the-quicker-and-easier-way/

Note: the script automatically updates the list daily with the latest Mobile App Categories. This way, we are always up to date. 🙂

– Nils

PS: Want to always be in the know when Performance Max campaigns are showing your ads on bad placements?  Check out the latest version of my Google Ads Script for PMax Placement Exclusions.

next time a Google Ads Rep reaches out, ask for this

A new year often means new targets. New targets for your clients, new targets for you, AND new targets for Google Ads Reps!

Already, the reps are reaching out like crazy to me and my clients.

If the same thing is happening to you, here’s the reply I would recommend:

Hey {name},

Thanks for reaching out, and all the best for the new year to you as well!

To kick off the new year, we want to focus on reducing wasted ad spend. For starters: can you enable the ‘Negative Keywords in PMax Campaigns’ feature in our accounts?

Next to that, if you have any other concrete suggestions to reduce wasted ad spend (based on our account’s data), please share them via email.

This will also enable us to see if scheduling your suggested call would benefit us both.

Thanks a ton already,

This reply will either get the rep off your back, or actually give you some meaningful result.

And, yes, you read that right! Google is (finally!) rolling out Negative Keywords for Performance Max campaigns (still in Beta). See details here: https://support.google.com/google-ads/answer/15726455

If you want to see what negative keywords you should add to your PMax campaigns to reduce wasted spend, run my script: https://nilsrooijmans.com/google-ads-script-pmax-non-converting-search-term-alerts/

If you want to learn how to add negative keywords to your PMax campaigns, read this:
https://nilsrooijmans.com/how-to-add-negative-keywords-to-your-performance-max-campaigns/

– Nils

Welcome 2025!

Happy New Year! I wish you all the best and PPC success in 2025 🙂

A question for you:

What is the biggest PPC lesson you have learned last year? 

(Bonus question: how will you apply this lesson in the new year?)

Hit reply and let me know!

– Nils

Free Streaming Tickets to ADworldExperience 2025

Hey PPC pros!

How does a $425 ticket to THE AdworldExperience 2025 sound?

(Spoiler: it sounds amazing, and IS amazing… I’ve attended 8 editions and absolutely LOVED each one.)

I am thrilled to offer 3 free streaming tickets to my newsletter subscribers for the PPC event of the year, happening October 2-3, 2025.

Find out more about the event at: https://www.adworldexperience.it/en/ 

Here’s the deal to get a free ticket:

1️⃣ Fill out this form.
2️⃣ Sit tight until January 6 at 4:00 pm CET.
3️⃣ Cross your fingers.

The winners will be announced on January 7 and will receive an exclusive link to stream the event for free!

Don’t miss your chance to join the lottery — it’s quick, easy, and could save you $425!

https://forms.gle/MgabyEKbLi4YoQVS8

Good luck!

– Nils

this is your job

Your job is to reduce wasted ad spend.

Here’s why:

The ad platforms are, by themselves, forces that increase your spend.

They do a pretty good job at it.

The extra spend can be both good and bad.

It is your job to make the distinction.

– Nils

[Google Ads Script] Performance Max Placement Exclusion Suggestions 

Here’s what I’ve been working on in the last few days:

[Google Ads Script] Performance Max Placement Exclusion Suggestions 

(click image to enlarge)

What it does:
This script suggests placement exclusions for bad placements where your PMax ads showed. If new placement exclusions are suggested, the placement exclusions are reported via email. The email contains a link to a Google Doc spreadsheet documenting all the placement exclusions suggestions.

Why you’d care:
PMax is notorious for showing your ads on placements that are not safe for your brand and/or only deliver fraudulent clicks and leads. (Seriously, try the script and check for yourself.)

Why I created it:
Countless PPC professionals from all over the world have asked me to create a script that would help them exclude bad placements from their PMax campaigns. Last Friday, Friday the 13th, was our lucky day: Google finally enabled the PMax Placement Report via Google Ads Scripts. This means we can now use Google Ads Scripts to help us get rid of some of the terrible PMax placements.

URL: https://nilsrooijmans.com/google-ads-script-pmax-placement-exclusion-suggestions/

NOTE: In the next few days, I’ll be releasing many updates to the script for free. Let me know if you have any suggestions on what to include.

Happy scripting!

– Nils

Saving ROAS with Data Exclusions

GRRRRR…

One of my clients F#$KED-up his conversion tracking. In the last 3 days, roughly 40% of conversions reported a conversion value that was roughly 135% of the real conversion value.

Don’t ask me who, why, or how. He doesn’t know. I don’t know.

But, as we all do know, Google Ads Smart Bidding uses conversions and conversion value data to “help meet your goals.” Meaning, it needs accurate conversion data to predict the conversion value of a potential click and place your CPC bid.

Wrong conversion data -> wrong bid!

Wrong bid -> either too much traffic at a cost that will ruin our ROAS, or we get too little traffic because of CPC bids that are too low.

Luckily, Google offers an advanced tool to help with the kind of situation I was in these last few days. It’s called ‘Data exclusions‘ and it saved my client’s account from a dramatic drop in return on ad spend.

Google says: “You can use data exclusions to help reduce the impact that conversion tracking issues may have on Smart Bidding Performance.”

Here’s info about it from the horse’s mouth:
https://support.google.com/google-ads/answer/10370710?hl=en

The important part for you to realize is this: data exclusions apply to CLICKS. Your data exclusions must exclude clicks that could have had the affected conversions attributed to them. 

When these clicks are excluded, the associated conversions are also excluded.

So, here’s the thing: make sure to consider your conversion delay and exclude any days of clicks that may have been impacted. 

It’s a best practice to exclude 90% of clicks associated with impacted conversion data.

For example: if there was a conversion value tracking issue from Dec 9 to Dec 11, and 90% of conversions usually happen in 2 days, apply the exclusion as quickly as possible, including ALL days with impacted clicks. (In this case, you would exclude Dec 7 to Dec 11.)

Not obvious at all, if you ask me. However, smart bidding needs smart fixes.

Don’t hesitate to use data exclusions when your conversion tracking shows issues!

– Nils

How to blame Google

The best way to tank your results is to blame Google for the situation your account is in — even if Google is doing evil:

  • “Google defaulted to Broad Match campaign setting in my account. Look at all those clicks from completely irrelevant search terms!”
  • “Google enabled Enhanced CPC on all my Manual bid campaigns after I created a new conversion action. My Avg CPC almost doubled, and not even a 20% increase in conversions!”
  • “Google decided to auto-apply all its recommendations. Now look at this terrible ad copy that hurts my brand, for keywords it auto-added that didn’t make any sense!”

The best way to improve your account’s results is to acknowledge Google’s actions — and beat your competition:

  • “So, Google is pushing PMax like crazy, having my competitors waste a ton of ad spend on non-converting clicks that are hidden by conversions that would have happened anyway. Let’s beat them with my Standard Shopping setup!”
  • “Oookay Google! You’ve got my competitor’s non-brand phrase match keywords to start matching for my brand name. Let’s have this competitor waste buckets of coins on clicks from the prime spot by temporarily lowering the bids for my brand keywords!”
  • “OiOiOi, Google added some more extremely fraudulent ‘built for AdSense’ websites to its Display Network. Let’s automatically exclude these terrible placements that only send click and lead fraud to me (and my competitor, who isn’t running any placement exclusion script)!”

– Nils

“What Google Ads Scripts Should I Be Using?”

“What Google Ads scripts should I be using?”

It’s a question I get all the time, in all shapes and forms:

“Which are the best uses of Google Ads scripts?”
“What are the best scripts for Google Ads?
What Google Ads scripts do you use most?
What is your favourite Google Ads script?

Sorry, there is no simple answer here. It’s a “how long is a piece of string” question and the only right answer is the infamous “it depends.”

I run over 40 custom-built scripts in my manager account that monitor my client account settings and performance. Some examples:

  • monitoring conversion tracking
  • spend versus budget alerts
  • payment issues
  • smart-bidding-gone-haywire alarm
  • monitor campaign settings like ad rotation, search partners, etc.
  • low QS keywords with significant spend alert

These scripts allow me to scale my business and still sleep well with the comfort of knowing that all things run smoothly. If any dramatic change happens, my scripts will alert me in no time.

Most of these scripts are custom-built by me, and not publicly available yet. However, I plan on developing a paid membership community that will let you have access to them soon, so stay tuned.

For now, I have created a short list of FREE scripts that typically benefit almost every account I come across:

1. Broken Link Checker
2. Negative Keyword Suggestions
3. Negative Keyword Conflicts Checker
4. Search Query Mining Tool (n-gram analyses)
5. Trending Search Terms Report

You can find the scripts here:

https://nilsrooijmans.com/google-ads-scripts-faq/what-google-ads-scripts-should-i-be-using/

Happy scripting!

– Nils

Step, Step, Step, Pause

Swen taught me a valuable lesson today:

“Step, Step, Step, Pause”

I was trying to replicate his moves. Him being my salsa teacher.

(Surely you’ll understand, no link to a video recording here. At least not yet!)

His lesson reminded me of my answer to a very common question:

“How to test different bidding strategies for a Google Ads campaign?”

My answer dances to the same rhythm as Swen’s advice.

Step 1: Create a campaign experiment and change the bid strategy setting in your experiment to the thing you want to test (i.e., different strategy, or different target).

Step 2: Sync the experiment (Trial) with your original (Base) campaign. This way, changes you make in your Base campaign will automatically be included in your experiment.

Step 3: Schedule the experiment to run for at least 6 times the median of your conversion lag AND at least 14 days.

Step 4: Wait.

That last step will give your bidding strategy the time to find its rhythm, just like Swen helped me find mine.

– Nils