n-gram analysis pro tip

Here’s a pro tip from fellow Google Ads Scripter Stefan Neefischer:

“Add soft conversion events to your ads account, e.g. engaged user (not bouncing after some seconds), and use this for making the n-gram analysis. You will identify a lot of totally off-topic patterns thanks to Google’s changes in the match types / close variants”

I agree and can confirm. N-gram analysis based on micro conversions allow you to reduce wasted ad spend much quicker.

Watch how the Shopping, DSA, and Broad-match algorithms match your products, pages, and keywords to user queries.

A great example of how you can use scripts to “Keep an Eye on Google’s AI“!

– Nils

PS: Here’s the link to my updated version of Brainlabs’ N-gram analysis script: https://nilsrooijmans.com/updated-google-ads-script-brainlabs-search-query-mining-for-n-gram-analysis/

ChatGPT + ADA -> sharing my latest creation

“Is there a trend in the number of impressions for my top 5 search terms this year?”

This question popped up while analyzing some Google Ads data today.

“Well, why not ask ChatGPT?”

And so I did.

I downloaded my search term data, opened up ChatGPT, enabled Advanced Data Analysis (formerly known as Code Interpreter), and…

Two prompts and five minutes later, this is what I got:

TWO prompts. FIVE minutes.

Thank you ChatGPT!

– Nils

Google Analytics 4 (GA4) – Dimensions and Metrics Cheatsheet

Are you creating custom or recommended events for tracking via GA4?

This cheat sheet is a goldmine for understanding event parameters, key dimensions, and metrics in GA4.

I really love the interactive interface and the details of the information.

Example use case: click on a metric or dimension and it will tell you if it’s available in Looker Studio, if it’s calculated, etc. At the top of the page you can also choose “Data Studio” in the dropdown and it will filter to show all available metrics/dimensions.

Here’s the link: https://data.ga4spy.com/

Quick, precise, and as far as I can tell, very up to date.

Enjoy your PPC day!

– Nils

Use ChatGPT on your own PPC data with Code Interpreter 

If you aren’t using Code Interpreter in ChatGPT yet: You Should.

Here’s a 20 min video that will, without any doubt, convince you to start playing with this super-tool: https://www.youtube.com/watch?v=O8GUH0_htRM

It is REALLY worth the watch.

Code Interpreter is the next best thing to a cold beer on a hot and sunny afternoon.

I already use it on a lot of my PPC data.

Today I created this n-gram analysis graph, in 5 mins:

Here’s the thing: Normally, creating this graph would easily take HOURS. Thanks to Code Interpreter I created it in 5 MINS!

This is only the top of the iceberg of what is possible with the combination of ChatGPT and Code Interpreter. 

– Nils

Landing Page Checklist

Last two years I’ve been lucky enough to be part of God Tier Ads, hosted by Ed Leake.

Ed and I share a passion for sharing the knowledge of PPC professionals. 

We both agreed, PPC Pros look beyond what is visible in the Google Ads interface.

So we decided I should share some of Ed’s insights on landing page design with you.

Here’s Ed:

Questions to ask yourself before creating your page:

  • Who is my ideal customer?
  • What problem do they have?
  • Without your product/service what would they be doing?
  • How is your product/service unique?
  • What do you want them to do on your landing page?


Page Structure (above the fold)

  • Headline focused on benefits
  • Product/service example in image(s)
  • Fears addressed so visitors don’t just leave
  • Call to action
  • Social proof such as a testimonial or rating


Copywriting

  • Plain simple language (no buzzwords)
  • Speak the language your prospects use
  • Highlight pain – the current way, or before vs after
  • Focus on the why and your USP
  • Show benefits first, features come after


Call to action

  • Focus on one goal
  • CTA is clear and contrasts with the page
  • Optional: secondary CTA for those not yet ready to act
  • Repeat primary CTA before site footer
  • Optional: CTA in sticky-header menu so it’s always visible
  • Use sub-text to address doubts near your CTA


Sign-up form 

  • Try to reduce form fields (ask for the bare minimum)
  • For larger forms retarget people who part-complete sign up
  • If your form is larger, consider 2-steps
  • Ask low threat questions first, not contact details


 Performance 


That’s it!

Is this the most extensive checklist you’re going to find?

Not at all.

What I like about it, and what discriminates Ed’s work from the rest, is that it gets you _thinking_ about what is _really_ important. Who is my ideal customer? What problem do they have? Without your product/service, what would they be doing?

The list is concise, concrete, and actionable. Another thing Ed and I both appreciate. 

Here’s my advice: next time you open your Google Ads interface, navigate to Landing Pages, sort by Cost desc, open the top landing page, and work your way through this checklist!

– Nils

PS:

Ed actually has 7 more checks to level up your landing page. They are part of his GTA course. If you’re really serious about upping your PPC skills and want to get more PPC nuggets like this, sign up for Ed’s God Tier Ads.

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

[Custom column] Increased Competition Detector

Here’s a creative use case for custom columns in your Google Ads UI: the Increased Competition Detector.

This custom column looks at decreases in click-through rate (>10%) and increases in CPC (>10%) to gauge potential market competition and activity. 

It is extremely helpful for monitoring activity on brand keywords (e.g., competitor poaching), but it’s valuable information for key non-brand terms as well.

Here’s what it looks like:

Here’s how to create it:

And here’s the formula for easy copy-pasting:

if(and((Avg_CPC.between_dates(report_range_end, report_range_end) / Avg_CPC.between_dates(report_range_start, report_range_start)- 1 ) > 0.1, (CTR.between_dates(report_range_end, report_range_end)/CTR.between_dates(report_range_start, report_range_start)-1  ) < -0.1 ), "incr comp", "-")

Go ahead, add it to your custom column set, it only takes 3 mintues!

Hat tip to Laura Schiele for sharing this on SEL earlier this year.

– Nils

[Google Ads Script] PMax Trending Search Categories

Performance Max is a black box. Extremely little data about its performance is shared with us via the Google Ads interface.

Yet, we all crave this data. 

In fact, if I had to choose between a Google Sheet with yesterday’s PPC stats and my morning coffee… well, my Harrar French press would win.

BUT, the thing is:

We are PPC professionals. We want to optimize based on performance data. Reduce wasted ad spend in areas with low click value. Increase clicks from targets that show great results.

Yet Google is making it harder to do our jobs each and every day by hiding valuable data in the interface.

Luckily for us, the Google Ads API allows us to pull some more data from the Google Ads platform.

And we can use a script to do some nice things with this data!

Imagine having a Google Sheet at your fingertips that shows what search categories are trending in your Performance Max campaigns.

–> Easily see how the PMax algorithm is changing, and matching your assets to new user queries.
–> Quickly see what types of searches these newly inserted products are being matched to.
–> Promptly respond to downward trends in search terms that showed great conversion value in the past.

And there’s more.

You can use the insights to:

– Add trending search categories as new (broad) keywords to your standard search campaigns 
– Tailor your creatives based on trends
– Add popular search categories to your landing pages and Merchant Center feed descriptions to boost performance

I will take any additional insight I can get since Google gives so little on PMax. That’s why I created this script.

Here’s a script to monitor how Performance Max is matching your assets to user queries, and what is changing in the search behavior of your audience.

The script creates a report in Google Sheets. The report lists the search categories that show a significant increase or drop in impressions. It compares last week’s data to the week before.

LINK: https://nilsrooijmans.com/google-ads-script-pmax-trending-search-categories/

– Nils

What PPC Tools I use

Here’s a question I get asked a lot: “What PPC tools do you use?”

I like to test many, but stick to the bare essentials.

Here’s what PPC tools I actually _use_ on a daily/weekly basis.  

From the Google stack:  
– Google Tag Manager  
– Google Analytics (GA4)  
– Google Merchant Center
– Google Ads  
– Google Ads Editor  
– Google Ads Scripts (I use them A LOT!)  
– Google Sheets  
– Google Docs
– Google Looker Studio 
– Google Big Query (for the bigger accounts with loads of data)
– Google Lighthouse

Feed management:
– Channable

Chrome extensions:
– page load times
– keywords everywhere
– keyword modifier
– tag assistant
– analytics debugger
– toggle case

What PPC tools that you can’t live without did I forget?

– Nils

error: 403 response code

Here’s a common issue when you’re running the famous link checker script: the script reports response code 403 for a number of URLs.

The site loads fine, and checking the same URLs with your browser, FireBug, Screaming Frog or any other tool does not return any error. Yet still, the link checker script reports these damned 403 error(s).

A 403 Forbidden response code typically indicates that the server understands the request but refuses to authorize it; it doesn’t give access to the requested resource.

There can be loads of reasons for this annoying issue.

Here’s the top 4:

1. User-Agent Header:

Some servers check the User-Agent header to identify the client making the request. If the User-Agent header sent by UrlFetchApp is different from a standard browser’s, the server might block it. You could try setting the User-Agent header to mimic a common browser in your UrlFetchApp request.

Fix: If the server is configured to block requests from non-browser User-Agent strings, you can modify the User-Agent string in your UrlFetchApp request to mimic a common browser. (More details in the link below.)

2. IP Whitelisting:

Some servers allow requests only from specific IP addresses or ranges. If the server’s configuration is set to allow requests only from certain IPs (like your own), requests from other sources (like Google’s servers) might be blocked. The web host is blocking Google in their firewall.

Fix: make sure to whitelist all IP addresses used by the UrlFetchApp service. Here’s the list of IP addresses: https://www.gstatic.com/ipranges/goog.txt

3. Authentication:

If your website requires some form of authentication (like cookies or tokens), the request from UrlFetchApp may lack these credentials, leading to a 403 error.

Fix: Make sure that any required authentication headers or cookies are included in the UrlFetchApp request.

4. Rate Limiting:

If the server has rate limiting in place and UrlFetchApp is making requests too frequently, it might trigger a 403 response. This might not be an issue with your browser if you’re not hitting those rate limits (your browsing behavior typically will not hit these limits, whereas an automated process will).

Fix: decrease the frequency and volume of the requests to your server, or change the server settings to allow for higher limits.

Because of the frequency of this 403 error, I’ve added an answer with some more causes and details to my Google Ads Scripts FAQ.

So, next time any of your team members gets this error message, simply send them this link:

https://nilsrooijmans.com/google-ads-scripts-faq/error-403-response-code/

Haven’t installed any link checker solutions yet? C’mon. It’s a no-brainer and only takes 5 minutes! Here’s the link: https://nilsrooijmans.com/the-best-adwords-script-i-have-ever-used/

– Nils

Five truths (?) about Google Ads AI

Five truths (?) about Google Ads AI:

1. It is true that the Google Ads AI, with broad match, smart bidding, and PMax allows advertisers to get access to ad inventory that was previously hard to target in a profitable manner.

2. It is true that, with enough time and money, the Google Ads AI will be able to learn and predict the conversion value of the clicks from this additional inventory.

3. It is true that this learning requires data, and that data costs money. Our money. (We pay for the trial-and-error that is part of the machine learning.)

4. It is also true that this cost is hidden in the reported averages in the Google Ads interface.

5. It is also true that Google doesn’t want you to prevent this cost.  It’s becoming harder and harder to limit our ad impressions to targets that have proven conversion value.

We are forced to target Google’s unsold inventory. Inventory that is bursting at the seems with low quality clicks. We are forced to pay for the machine to learn how to weed out these low quality clicks. We are forced to continue doing so, because that’s the area where Google’s ad revenue has the most growth potential.

Please tell me I am wrong.

– Nils

Stop Dynamic Search Ads showing “out of stock” products

In the last two years, I’ve been lucky enough to be part of God Tier Ads, hosted by Ed Leake. It’s pretty unique. Unlike other tools or resources I’ve used in the past, this one is actually kept up to date AND it doesn’t just shill the same old stuff that Google does.

The thing I like most is that Ed continuously shares practical methods and techniques that can be applied immediately to produce observable outcomes. That perfectly fits my mission: to help you improve your career and your PPC results by spreading knowledge on PPC automation.

So, we decided I should share some of Ed’s PPC nuggets of gold with you. Here’s the first: “Stop Dynamic Search Ads showing ‘out of stock’ products”

DSAs are great. I use them to automatically target relevant user queries for which my standard search campaigns do not have keywords yet. This way, I can start advertising less popular products without all the work of creating separate keywords, ad groups, etc.

One downside though: Google’s DSAs don’t really care whether or not your product is still available. They will send the click anyway.

So, how do you prevent this wasted ad spend?

1. Navigate to your “Negative dynamic ad targets”
2. Click the blue plus icon and select Add to “Campaign”
3. Select “Create rules to target web page” and select “Page content” contains. Enter your text for products that are out of stock (e.g., “Out of stock”), as found on the website.
4. Click “Add”
5. And finally, remember to hit Save.

– Nils

PS:

If you’re really 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

[PPC theory] Click share

A PPC friend asked an interesting question today.

If you’re a PPC nerd like me, the answer might interest you.

I am going to paraphrase the question a bit to make it more concise:

“Could you explain to me why I have a 50% Impression Share and only a 35% Click Share in this campaign?  I don’t understand how there can be such a significant difference.

My answer:

Here’s my understanding: let’s say Google gets 100 user queries for which your campaign is eligible (meaning, you entered the auction). IS of 50% means that your ad shows 50 times. BUT your ad is not the only ad. Your competitors also show. Click share of 35% means that you get 35% of all the clicks on all the ads in all 100 auctions that you entered.

So let’s say these 100 SERPs generated 60 clicks on ads total for Google, and you got 20 clicks out of your 50 impressions, your click share would be 20/60 = 33.3%.

Some more theory with links to resources:

Impression share includes all auctions where your ad showed (impressions), and all auctions where your ad is competitive enough to enter the auction (total eligible impressions). Impression share (IS) is the percentage of impressions that your ads receive compared to the total number of impressions that your ads could get.

Impression share = impressions (50) / total eligible impressions (100), thus IS = 50%

Click share includes all auctions where your ad showed or where your ad was competitive in the auction but did not show. (total eligible impressions)

Let’s say that, during the day, all auctions where your ad is competitive enough to enter the auction generate a total of 60 clicks on the ads (note every single SERP view can generate 0 or more ad clicks). And let’s say you got 20 of those clicks.

Now you have:

Click share = 20/60 , thus 33.3%

More details:
https://support.google.com/google-ads/answer/6299696?hl=en
https://support.google.com/google-ads/answer/2497703?hl=en

– Nils

“If it wasn’t for scripts, I wouldn’t have clients and ex-clients referring clients to me.”

A few weeks ago I sent out an email listing the top 5 benefits for agency owners when it comes to using scripts. (Here’s a copy of it, for your convenience: https://nilsrooijmans.com/daily/why-agency-owners-love-scripts)

Good friend of the list Sanja Jovanovic (name shared with permission) replied with a lovely message that clearly illustrates one of the advantages :

If it wasn’t for scripts, I wouldn’t have clients and ex-clients referring clients to me.

One of my fav clients had to cut the budget for external agencies so we’re not working together anymore, though I still have access to their account.

I use the new search term alert script and emailed them today to check in and say they are paying $700 per click for a competitor search term and they should look into expanding their negative keyword lists.

The feedback was greatly appreciated. I firmly believe they will be back as soon as they get more funding.

Question for other agency owners: have you experienced similar benefits from using scripts lately?

Oh, and here’s the link to the script Sanja mentioned:

https://nilsrooijmans.com/google-ads-script-trending-search-terms/

– Nils

Optimized targeting and audience expansion — some thoughts and settings

FYI: Last week, similar segments have been fully removed from all ad groups and campaigns in Google Ads.

Display, Discovery, and Video action campaigns that are still using similar audience segments after August 1, 2023 will be opted into optimized targeting.

Video campaigns with “Product and brand consideration” or “Brand awareness and reach” objectives will be opted into audience expansion.

If you have Display, Discovery or Video campaigns that had similar audiences (aka “similar segments”) running, beware: optimized targeting may stop your campaign from serving on a specific audience. This can happen when Google thinks the specific audience has poor performance.

Google also says:

If you’ve been using similar segments on Search or Shopping campaigns and are not using Smart Bidding, you should use Smart Bidding with your campaigns. If you’re using Smart Bidding already, or running Performance Max campaigns, you don’t need to take any action, since Performance Max campaigns leverage signals from your first-party data.

My take: this is another great example of how PPC is changing. It is not up to us anymore to define the targets we want our ads to show for. The machine will explore the targeting options, and zoom in on what “works”.

On the one hand, this is great news: we can automagically grow the account beyond our limited knowledge of what audiences will convert (the ones we target). The bad news is that exploring these new opportunities costs money. Our money.

And it is not obvious where that money is being spent. 

With the removal of more strict targeting capabilities, Google is forcing us to pay for the trial and error that is fundamental to machine learning. AND it is hiding this cost in the reported averages…

Here’s the thing: Always keep an eye on Google’s AI.

Monitor the performance of this kind of change like a hawk!

If you do not like the feature, you can turn off the ‘Optimized targeting and audience expansion’ setting at the account level, in the audience manager.

NOTE: If you leave this on at the account level, be sure to turn it off in your remarketing campaigns/ad groups, as Google will target non-remarketing audiences when Optimized Targeting is enabled.

More info: https://support.google.com/google-ads/answer/12463119?hl=en

-Nils

PS:  

What is the difference between audience expansion and optimized targeting? Here’s Google’s answer: 

Audience expansion looks for additional conversions by expanding to audience segments that look like your manually-selected audience segments. Optimized targeting looks for additional conversions by targeting people most likely to convert (based on real-time campaign conversion data, like what people who convert recently searched for). With optimized targeting, your manually-selected audience segments influence the model by providing an informed starting point.

For example, Jiaying wants to attract people to the upcoming launch of a new running shoe. In the campaign’s targeting, Jiaying uses two audience types: a custom segment based on top performing keywords from her Search campaigns (for example, “running shoe sale”), and the “Athletic Footwear” in-market segment. Here’s how audience expansion and optimized targeting may handle Jiaying’s campaign:

Audience expansion: In addition to Jiaying’s manually-selected audience segments, audience expansion includes similar segments like the “trainers sale” custom segment and the “Sporting Goods” in-market segment.

Optimized targeting: Optimized targeting expands to users that are likely to convert by creating a profile of what a converter looks like based on real-time conversion data. For example, that data could include Google searches for specific running shoe brands or clicks to a popular sportswear website. While Jiaying’s manually-selected audience segments provide a starting point, optimized targeting looks for conversions outside of her selected segments.

ad copy inspiration

Need inspiration for your ad copy on product X?

Try this:

1. Go to Google
2. Type ‘site:reddit.com [product_name]’
3. Scan the SERP
4. Click any that stand out and research the language in the post and comments

Here’s the thing: people respond best when you speak _their_ language.

Researching your audience in the wild (i.e., on Reddit) will teach you their language.

– Nils

Redirects — don’t let them hurt you


Did you know that redirects hurt your account’s performance?

Here’s why:

  1. Page load times are an important factor. Using 301/302 redirects slows things down which can impact your conversion rates and Quality Score and thus overall performance.
  2. Redirects often drop URL parameters necessary for proper conversion tracking, resulting in incomplete data and under-reporting of conversions. This is especially bad when you are running smart bidding.
  3. Cross-domain redirects are terrible for analytics.

Luckily for us, there’s a nice Chrome extension that makes it very easy to spot redirects during campaign setups, and/or landing page analyses. It’s called “Redirect Path,” and here’s a link to it:

https://chrome.google.com/webstore/detail/redirect-path/aomidfkchockcldhbkggjokdkkebmdll?hl=en

Now, unfortunately, links that do not redirect at the time of setup might do so in the future. Here are some possible reasons:

  • Changes in URL structure: Your SEO colleagues or web developers might have decided it was time to change the URL structure of the website, redirecting visitors all over the place.
  • CMS updates: The CMS might have been updated, adding or removing trailing slashes to all URLs for some reason.
  • Protocol shifts: Your client might have just shifted from HTTP to HTTPS (yes, I know, it’s 2023 already!).

All sorts of things can result in your Final URLs not working properly anymore.

That’s why I created my Redirect Checker script.

It checks for URLs with redirects, reports them in a Google Sheet, and sends an email if there’s at least one redirect. You can access the script here:

https://nilsrooijmans.com/google-ads-script-check-for-redirects/

Happy scripting!

-Nils

an unusual lunch

Some 2 years ago I had an unusual lunch.

My good PPC friend and PPC hero Wijnand Meijer and I sat down right next to the Amsterdam canals, at Café de Jaren.

For those of you who don’t know Wijnand: he’s a champion in the PPC arena, working on the best PPC Audit tool -> TrueClicks.

Wijnand is about as thorough as anyone can be when it comes to PPC research. He’s the author of a sublime blog post series on Adwords audits on Brad Geddes’ blog. (Yes, Adwords… a bit outdated now, but still very worth the read). 

He’s given many talks and presentations at diverse international PPC events. Each and every one of them packed with too much references to deep PPC knowledge for any of us to consume in a lifetime.

Fair to say, Wijnand knows his shit. 

So when Wijnand speaks, I listen.

This time was different.

Wijnand: “Last week I studied this new Google Ads framework I discovered. GTA.”

Me: “Lol. So, you drank the gamification cool aid, right? You’re trying to get TrueClicks customers hooked to your tool by implementing some manipulative game mechanics. You sneaky bastard.”

Wijnand: “No, no. It’s not that. It’s called God Tier Ads. Sort of an advanced course for Google Ads.”

Me (confused): “Huh? What do you mean? Another one of those self-proclaimed gurus refurbishing the standard PPC shit that’s already out there on each and every blog? And FFS, what’s up with that name? _GOD_ tier ads?? Christ!”

Wijnand: “Nope. This one is different. It’s Ed Leake. Ed is the real deal.”

Me: “Never heard of.”

Wijnand: “Well, you should.”

Me (arrogant prick): “Oh come on! Last time I learned something new from buying an online course on Google Ads was when BMM still had to be invented.”

Wijnand: “This one is different.”

Me: “How so?”

Wijnand: “Ed has been over the river and through the woods. Maybe even more experience than you and I.”

Me (even more arrogant): “Sure.”

Wijnand: “He’s funny too.”

Me: “Haha, so not German, right?” 
[Sorry to all my German friends who can laugh about this bad joke.]

Wijnand: “British. Crazy accent.”

Me: “Well anyways. I am not buying. I’ve spent thousands on courses I never finish. Done with it.”

Wijnand: “Your loss. Trust me. You’ll like it.”

Me: “Right. So, I’ve heard they serve great whites to go with the salmon here.”

Two hours and one bicycle ride later I got back to my senses. It was Wijnand recommending, after all. (I blame the wine).

Swiped the credit card, and dove in.

Fast forward 2 years.

Not a single regret.

GTA _is_ the real deal. Packed with extremely handy checklists that catapulted my workflows to remarkable improvements, unique actionable insights that sparked dozens of new experiments, and extremely valuable videos for educating new team members. 

Ed keeps the content up-to-date, every month, for free, for life! And if you’re lucky, you’ll even get a smile or two watching his pretty face presenting his nuggets of gold.

So, today, I am telling you. It’s worth it.

If you are serious about your Google Ads Skills and want to build some more PPC muscle, GO GET THE GTA FRAMEWORK.

Trust me, you’ll thank me later.

So this is me thanking Wijnand. And Ed.

Here’s the link: 

https://app.godtierads.com/gta-bonus-bundle/apnnu (*)

Pay once, get everything.

Use my discount code “NILS100” at checkout to get $100 off. 

– Nils

(*) Yes, that’s an affiliate link. Normally I don’t do this. Ed is the exception. Says enough, right?

interesting mail

This landed in my inbox today…

I’ve been working as a fake PPC marketeer for 3 years by randomly changing manual bids in an account I inhereted.

Now my boss decided he wants to go along with Google’s advice and switch to Performance Max.
I want to learn PPC properly and become a real Google Ads specialist. What should I do?

Please help me respond.

– Nils